加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy闭包不适用于超类的静态final字段

发布时间:2020-12-14 16:22:05 所属栏目:大数据 来源:网络整理
导读: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 以上是一个简单的样
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

以上是一个简单的样本来说明问题.它无法使用Eclipse上的Groovy插件进行编译.删除超类字段中的final或static解决问题.但是,我不知道为什么会这样.

http://groovy.codehaus.org/Groovy+Beans
在此链接中,它提到了Groovy中使用的属性和字段的规则.我认为应用的应该是最后一个,即元类.不幸的是,我仍然无法理解这种行为.

在所有版本的Groovy中都会一致地重现该行为.也许有人可以向Groovy团队报告一个错误.我以前从未这样做过.如果有经验的人可以做到这一点会更有效率.

解决方法

这很可能是 http://jira.codehaus.org/browse/GROOVY-5776,比它看起来更难修复

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读