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
上的Eclipse
进行编译。删除超类字段中的final
或static
解决问题。但是,我不知道为什么会这样。
http://groovy.codehaus.org/Groovy+Beans 在此链接中,它提到了Groovy中使用的属性和字段的规则。我认为应用的应该是最后一个,即元类。不幸的是,我仍然无法理解这种行为。
在所有版本的Groovy中都会一致地重现该行为。也许有人可以向Groovy团队报告一个错误。我以前从未这样做过。如果有经验的人可以做到这一点会更有效率。
答案 0 :(得分:2)
这很可能是http://jira.codehaus.org/browse/GROOVY-5776,它比看起来更难以修复
答案 1 :(得分:1)
正如blackdrag已经指出的那样:这是一个错误。
但另一种解决方法是添加protected
关键字:
protected final static String newLine = "*"