枚举作为实例变量

2024-03-08

如果您有一个枚举,例如

enum Coffee {
    BIG,
    SMALL
}

以及一个具有像枚举这样的实例变量的类:

public class MyClass {
    private Coffee coffee;

    // Constructor etc.
}

为什么可以在构造函数中说例如coffee.BIG? 不明白你可以参考一下吗?枚举作为实例变量是否初始化为除null?这是 SCJP 书中第一章的自测题#4。我试图缩短代码和问题。


In

enum Coffee {
    BIG,
    SMALL
}

大或小是public static finalCoffee 类的字段,并且像所有静态字段一样,它们可以通过类名访问,例如

Coffee b1 = Coffee.BIG;

或者通过与类相同类型的引用,例如

Coffee s2 = b1.SMALL;
Coffee s3 = Coffee.BIG.SMALL; //BIG is reference of type Coffee so it is OK (but looks strange)

但让我们记住这一点我们应该避免通过引用访问静态成员。这会造成混乱,因为我们并没有真正访问instance但成员class(例如,不存在多态行为)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举作为实例变量 的相关文章

随机推荐