Java中的奇怪问题: 为何下面这段代码会打印 testEnum:FOO

tongcanghai 发布于 11/04 17:22
阅读 203
收藏 0

为何下面这段代码会打印 testEnum:FOO

enum TestEnum {
    FOO, BAR;
}

public class TestEnumMain {
    public static void main(String[] args) {
        TestEnum testEnum = null;
        testEnum = testEnum.FOO;
        if (testEnum == null) {
            return;
        }
        System.out.println("testEnum:" + testEnum);
    }
}

TestEnum testEnum = null; // 本以为设为 null 后

testEnum = testEnum.FOO; // 这句该抛 NOP 的

哪位大神能指点一二 

加载中
0
Shazi199
Shazi199

因为枚举类型的成员都是静态的,引用静态成员并不需要实例化对象,编译器会直接编译为“TestEnum.FOO”

0
loyal
loyal
基础。java中实际上没有枚举,语法糖而已。最后编译成成员实例,你点出来的都是实例。
0
tongcanghai
tongcanghai

应该是编译器直接编译成“TestEnum.FOO”了

返回顶部
顶部