2

これが以前に回答されていたら申し訳ありません。検索を行いましたが、見つかりませんでした。こんにちは、列挙型を以下のように定義しようとしましたが、これは正常に機能します。

public enum MyEnum {

    PRODUCT,STORE,PROMOTION,VOUCHER,URL;

    private int value;


}

しかし、以下のように定義すると、int token を識別できません。何故ですか?

public enum MyEnum  {

    private int value;

    PRODUCT,STORE,PROMOTION,VOUCHER,URL;

}
4

3 に答える 3

3

列挙定数は、列挙型の他の変数およびメソッド宣言の前に宣言する必要があります。列挙型が値のみを宣言する場合、セミコロンはオプションです。それ以外の場合、宣言された値の末尾のセミコロンは必須です。たとえば、「;」が必要です。BLUE("青")の最後に。

Java列挙型を使用する場合、何ができて何ができないのですか?

于 2013-06-19T04:56:13.197 に答える
2

補遺 (質問は既に回答されています。これはハウツーです): コンストラクターを列挙型に追加する場合は、コンストラクターへの引数を列挙型定数自体にアタッチする必要があります。

public enum MyEnum
{
    VALUE1(1);

    private final int value;

    // Constructors of enums are private by default,
    // no need to specify the access modifier
    MyEnum(final int value)
    {
        this.value = value;
    }

    public int getValue()
    {
        return value;
    }
}

メソッドを追加することもできることに注意してください。

public enum MyEnum
{
    VALUE1
    {
        @Override
        public int getValue()
        {
            return 0;
        }
    };

    public abstract int getValue();
}

そして、両方を組み合わせることができます。この場合、次のように値が最初に記述され、次にメソッドの実装が記述されます。

VALUE("foo", 32)
{
    @Override public int method1() { // whatever }
    @Override public String method2() { // whatever }
};
于 2013-06-19T05:01:08.187 に答える