Java中Enum类型的实例变量的默认值是什么?

6

这是我的样例代码:

enum A {
    A,
}

class TestA {
    A a;
    public static void main(String[] args) {
        final TestA testA = new TestA();
        System.out.println(testA.a);
        System.out.println(testA.a.A);
    }
}

这将打印出:

null
A

如果未初始化的枚举变量实例的默认值为 null,那么如何访问枚举的实例?
2个回答

8

A.A是一个静态变量。虽然不是一个好主意,但是被允许使用引用该类实例的变量来访问该类的静态变量,即使它为null。这不仅限于枚举:

Integer i = null;
System.out.println(i.MAX_VALUE);

运行良好。但实际上应该写成

System.out.println(Integer.MAX_VALUE);

4

枚举常量本质上是静态成员,因此它们遵循与静态成员完全相同的规则。

它之所以有效的原因恰好是 ((System) null).out 不会引起 NPE 的原因,因为它被转换为静态成员访问,不以任何方式使用 null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接