0
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);
    }
}

在 main 函数e中用 初始化了Day.SAT,但是为什么e.MON没有报错呢?初始化它有意义吗?

4

2 回答 2

1

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

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

System.out.println(Day.MON); // sane, normal way
System.out.println(e.MON); // supported, but discouraged way.
于 2012-09-18T15:39:03.933 回答
0

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

于 2012-09-18T15:40:45.930 回答