10

私は を持ってenumいて、 であるパラメータ (フィールド) を持っていますString。このフィールドにセッターを設定することはできますか?

public enum Blah {
    Monday("a"), Tuesday("b");
}

private final String letter;

Blah(String letter){
    this.letter = letter;
}

次のことをしてもいいですか?

public String setLetter(String letter){
    this.letter = letter;
}
4

6 に答える 6

11

finalフィールドを設定可能にするには、フィールドの修飾子を削除する必要があります。

public enum Blah {
    Monday("a"), Tuesday("b");


    private String letter;

    private Blah(String letter){
        this.letter = letter;
    }

    public void setLetter(String letter){
        this.letter = letter;
    }
}

http://ideone.com/QAZHol

ただし、列挙型にミュータブルな状態を持たせることは一般的に推奨されません。

于 2013-03-08T20:08:26.100 に答える
4

フィールドが としてマークされているため、これは機能しませんfinal

原則として、列挙型が可変フィールドを持つことを妨げるものは何もありません。ただし、これが良い考えであることはめったにありません。

于 2013-03-08T20:08:19.630 に答える
0
public class EnumExample {
        public enum Blah {
        Monday("a"), Tuesday("b");


        private String letter;

        private Blah(String letter){
            this.letter = letter;
        }

        public void setLetter(String letter){
            this.letter = letter;
        }

        public String getLetter(){
             return letter;
        }
    }

        public static void main (String[] args)         {
             System.out.println("The Value of Monday is "+ Blah.Monday.getLetter());//prints a
             System.out.println("The Value of Tuesday is "+Blah.Tuesday.getLetter());//prints b
        }
}
于 2013-03-09T12:17:49.487 に答える