4

列挙型静的宣言の違いを見つけようとしていましたか?

public class Example {
  public static enum Days {
    MONDAY(1);

    private int day;
    private Days(int day) {
      this.day = day;
    } 

    public int getDayNum() {
      return day;
    }
  }
}

そして下の方

public class Example {
  public enum Days {
    MONDAY(1);

    private int day;
    private Days(int day) {
      this.day = day;
    } 

    public int getDayNum() {
      return day;
    }
  }
}

上記の両方にまったく同じ方法でアクセスできます

Example.Days.MONDAY.getDayNum();

これは、列挙型がstatic, final. 違いは何ですか?上記のいずれかをいつ使用するのですか?

4

4 に答える 4

10

JLS 8.9に従って:

ネストされた列挙型は暗黙的に静的です。ネストされた列挙型を static として明示的に宣言することは許容されます。

これは、ローカル (§14.3) 列挙型を定義すること、または内部クラス (§8.1.3) で列挙型を定義することは不可能であることを意味します。

于 2013-07-01T15:33:56.690 に答える
4

Enums暗黙のうちにpublic static finalです。

したがって、列挙型で static-keyword を使用しても違いはありません。

于 2013-07-01T15:31:33.980 に答える
2

違いはありません.Javaは多くの場合、冗長なキーワードを許可するだけで、必要に応じて明示的にすることができます. ただし、一般的には、列挙型は静的であることが理解されているため、そのように宣言する理由はありません

于 2013-07-01T15:33:51.753 に答える
1

ドキュメントは言う

列挙型は、クラス本体を持つ列挙型定数が少なくとも 1 つ含まれていない限り、暗黙的に finalです。

ネストされた列挙型は暗黙的に staticです。ネストされた列挙型を static として明示的に宣言することは許容されます。

于 2013-07-01T15:34:12.580 に答える