今日、私はGroovyでかなり独特の問題/機能に出会いました。 それを使用して最後のフィールドをインクリメントすることが可能であるように見えます ++
Groovyの演算子です。
それはあなたにとってバグのように見えますか?この振る舞いは、私がJavaに期待することと一致しません。 どのようにそれが可能であるかについて誰かが何か考えを持っていますか?
私は問題を特定するために少しスポックテストを用意しました。
import spock.lang.Specification
class FinalModifierTest extends Specification {
def "tests bizarre behaviour of final modifier in Groovy"() {
given:
Adder adder = new Adder()
expect:
adder.number.class == Integer
when:
adder.number = 7
then:
thrown(ReadOnlyPropertyException)
when:
adder.increment()
then:
adder.number == 2
}
}
class Adder {
final int number = 1
void increment() {
number++
}
}
明らかに、InteliJは最終分野について私に知らせました以下のメッセージを表示して割り当て 「最終フィールド番号に値を代入することはできません」しかし、コードはまだコンパイルし、さらに悪いことに、それは首尾よく実行されます!
私は上の例の上で走っていました:
JVM:1.7.0_51
Groovy:2.2.2
回答:
回答№1は4それはあなたにとってバグのように見えますか?
はい。あなたが好きならあなたはでJIRAを提出することができます https://jira.codehaus.org/browse/GROOVY そして私達は見てみることができます。