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

Kor*_*gay 5 java enums

这是我的示例代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个会打印:

null
A
Run Code Online (Sandbox Code Playgroud)

如果未初始化的实例Enum变量的默认值为null,那么访问Enum实例的工作原理是什么?

JB *_*zet 7

AA是一个静态变量.使用引用该类实例的变量来访问类的静态变量是一个坏主意,但是被授权,即使它是null.这不仅限于枚举:

Integer i = null;
System.out.println(i.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)

运行正常.但它应该写成

System.out.println(Integer.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)