class Parent {
final static String newLine = "*"
}
class Child extends Parent{
List body = [3, 4, 5]
String toString() {
def str = new StringBuilder()
body.each { str.append(it + newLine) }
str
}
}
def c = new Child()
println c
上記は、問題を説明するための簡単なサンプルです。Groovy plugin
onを使用してコンパイルできませんでしたEclipse
。final
またはスーパークラスのフィールドのいずれかを削除static
すると、問題が解決します。しかし、なぜそうなのかはわかりません。
http://groovy.codehaus.org/Groovy+Beans このリンクでは、Groovy で使用されるプロパティとフィールドのルールについて言及しています。適用されるのは最後のもの、つまりメタクラスであるべきだと思います。残念ながら、私はまだ動作を理解できませんでした。
この動作は、Groovy のすべてのバージョンで一貫して再現されます。誰かが 1 つのバグを Groovy チームに報告するかもしれません。私はこれまでにこれをしたことがありません。経験豊富な人がそれを行うことができれば、より効率的です。