groovy - Groovy 中 static 和 final 修饰符的使用

标签 groovy static final

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

private static final String TEST = "Test"
}

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

Test String is Test



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

Test String is null



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

最佳答案

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

关于groovy - Groovy 中 static 和 final 修饰符的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9769597/

相关文章:

c# - IoC (CaSTLe Windsor) 和静态助手

c++ - 与参数同名的方法导致不同的输出

java - Java 中的嵌套类可以继承最终封闭类吗?

java - final方法是内联的?

Gradle 加载 Groovy 3 库

java - 将 Java 类导入 Groovy 模板(Play 框架 1.x)

gradle - 在 Gradle 扩展/复制期间,如何将不同文件夹中的辅助文件包含到主文件中?

list - 想要使用.contains()或 'in'检查对象是否在常规列表中

java - 为什么通过实例调用静态方法不会给 Java 编译器带来错误?

Java Reflection,更改私有(private)静态最终字段没有做任何事情