在Groovy中使用static和final修饰符

时间:2012-03-19 11:48:50

标签: groovy static final

class GroovyHello {
    public String execute() {
             println("Test String is " + TEST)
    }

private static final String TEST = "Test"
}

Groovy V.1.6.3中上述代码段的输出是

  

测试字符串是测试

Groovy V.1.8.6中上述代码段的输出是

  

测试字符串为空

如果我将声明修改为静态(private static String TEST = "Test")或最终(private final String TEST = "Test"),则上述代码段会成功打印字符串,但不能同时打印。

2 个答案:

答案 0 :(得分:2)

我的理论认为,由于对象静态和私有,因此您无权访问它,因为它是一个单独的对象。但是,如果它只是私有的,那么您的方法是对象的一部分,并且它可以访问它。如果它只是静态的,那么您可以访问该字段 - 默认情况下该字段是公共的。

答案 1 :(得分:0)

当我们在其他传递依赖项的运行时类路径中使用Groovy ++时,我们注意到了这种情况。如果是这种情况,你可能会看一下。