java - 错误 : field name cannot be declared static

标签 java multithreading static inner-classes

public class Application {
    public static void main(String[] args) {
        final class Constants {
            public static String name = "globe";
        }
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Constants.name);
            }
        });
        thread.start();
    }
}

编译错误:字段名称不能在非静态内部类型中声明为静态,除非用常量表达式初始化

解决这个问题?

最佳答案

Java 不允许您在局部函数内部类中定义非最终静态字段。仅顶级类和静态嵌套类允许具有非最终静态字段。

如果你想在你的Constants类中有一个static字段,把它放在Application类级别,像这样:

public class Application {
    static final class Constants {
        public static String name = "globe";
    }
    public static void main(String[] args) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Constants.name);
            }
        });
        thread.start();
    }
}

关于java - 错误 : field name cannot be declared static,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526099/

相关文章:

java - 在作家阅读器中使用信号灯

c++ - 如何在 Qt5 中设置线程的 CPU 亲和性?

struct - 如何将我的 Rust 结构之一的实例声明为静态的?

c - 初始化静态结构

java - 在另一台计算机上导出并重新导入 ECDSA 私钥后, key 会有所不同

java - java中的线程阻塞问题

java - 在 TestNG 中覆盖 @BeforeMethod

Java - 将字符串与字符串数组进行匹配

multithreading - 缓存可以保存来自多个进程的数据吗?

java - 扩展 Java 类还是提供静态帮助类?