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本質的に、これらの 2 つの行は同じことを行います (その上に定義があると仮定します):

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 に答える