2017-06-13 10 views
-1

ここで何が起こっているのか混乱しています。それは単純なことですが、なんらかの理由で私は値ではなく列挙の名前を取得しています。ここでvalueOfで返されない列挙値

は私のクラスである:

この経由して別のクラスでそれを呼び出す
public class Class1{ 

    public enum SchoolEnum { 
    01("MIDDLE_SCHOOL"); 

    private String value; 

    SchoolEnum(String value) { 
     this.value = value; 
    } 

    @Override 
    public String toString() { 
     return String.valueOf(value); 
    } 
    } 

    private SchoolEnum schoolEnum = null; 

    public SchoolEnum getSchoolEnum() { 
    return schoolEnum; 
    } 

    public void setSchoolEnum (SchoolEnum schoolEnum) { 
    this.schoolEnum= schoolEnum; 
    } 

} 

:私は01列挙型の値を取得しようとするたびに

Class1 response = new Class1(); 
response.setSchoolEnum(Class1.SchoolEnum.valueOf("01")); 

、私は単純に01の代わりを取得していますMIDDLE_SCHOOLの値ここで何が起こっているのですか?

+0

私は質問を理解していません。 'SchoolEnum.valueOf'は文字列ではなく' SchoolEnum'を返します。ポイントする文字列が必要な場合は、 'schoolEnum.value'を使用してください。ストリングが必要なときに列挙型はどこにありますか? – yshavit

+2

(「01」は有効な列挙型の名前ではないので、上記のコードは実際にはコンパイルされません...) – yshavit

+1

私はそれを無視していません。投稿されたコードはコンパイルされません。 '01'(ゼロ1)は不正な変数名です。列挙型定数には、OPという意味での値はありません。定数は値です。違法な定数を使っているような属性を定義し、それに 'value'という名前を付けると、それはenum値の" value "_attribute_になります。 Javaチュートリアルでは、学ぶべきenumについてのセクションがあり、変数の命名に関するドキュメントも役立ちます。 –

答えて

0

あなたの宣言が間違っていると思います。

01("MIDDLE_SCHOOL"); 

上記の宣言では、コンパイル時エラーが発生します。変数名は数字で始めることはできません。

あなたが使用できるいくつかの命名提案。

_01("MIDDLE_SCHOOL"); 
ONE("MIDDLE_SCHOOL"); 
ZERO_ONE("MIDDLE_SCHOOL"); 
関連する問題