将枚举实例引用为该类型的另一个实例的字段是否合法?

时间:2012-09-18 15:32:48

标签: java enums static-members

enum Day{SAT,SUN,MON,TUE,WED,THURS,FRI}

class Plan{
    Day d;

    public plan(Day d)
    {
        this.d=d;
    }

    Day getDay()
    {
        return d;
    }
}

class tester{
    public static void main(String[] args){
        Plan p=new Plan(Day.SAT);

        Day e=p.getDay();

        System.out.println(e.MON);
    }
}

在主要功能e中使用Day.SAT初始化,但为什么e.MON不是错误?是否有意义初始化它?

2 个答案:

答案 0 :(得分:1)

枚举值几乎是“仅”static final个字段。在Java中,您可以通过引用访问静态字段。 不应该这样做,但是因为它令人困惑。

本质上这两行做同样的事情(假设在它们上面有一个Day e定义):

System.out.println(Day.MON); // sane, normal way
System.out.println(e.MON); // supported, but discouraged way.

答案 1 :(得分:0)

e.MON是"喜欢"通过该类的实例变量访问类的静态成员,因此不会显示错误。