2011-12-03 11 views
0

変数enumからその値を取り出し、string.hに変換する必要がありますか?enumの値をとり、それを文字列に変換する

ここでは、タイプの列挙です:

public enum State{ 
     b,c,p; 

}; 

は、今私は、オブジェクトの文字列の中に一つの値を挿入する必要があります。

+4

enumにはこれを行う方法があります。あなたはAPIをチェックしたいと思うでしょう。 –

+0

私はそれを見つけることができませんでした。値が見つかりました – Mazzy

答えて

2

enum.nameまたはenum.toStringを使用して列挙定数の名前を取得するか、enum.ordinalを使用して順序を取得します。

2

そう、名前()やtoString()を使用することができます。

State aState = State.c; 
String strState = aState.name(); 

here詳細については、公式のJavaのリファレンスを参照してください...

2

State.b.toString()"b"を返します。同じことが他のものにも当てはまります。

2

通常、

State state = ...; 
String string = state.toString(); 

は動作するはずですが、誰かが他の目的のためにtoStringを上書きしてしまうことがありますので、それが推奨されていません。

代わりにあなたが探している方法はさておき、あなたの列挙に述べたように

String string = state.name(); 

では、常にすべて大文字にする必要があり、彼らは説明的な名前を持つ必要があります。それは言語のルールではなく、大会です。たとえば、enum State { ON, OFF, PAUSED; }です。

1

方法#1:使用してあなたがStateの値と同じであるStringを印刷したい場合は、あなたがtoString()メソッドを使用することができます内蔵のtoString()name()方法

、または方法はname()です。

System.out.println(State.b); // Prints "b" 
System.out.println(State.c); // Prints "c" 
System.out.println(State.p); // Prints "p" 

方法#2:あなたはそれらの状態のそれぞれに関連付けられたカスタムStringを持つようにしたい場合はカスタムマッピング

を作成するためにコンストラクタを使用すると、あなたが特定の値を関連付けるために、コンストラクタを使用することができます各enum値に:あなたはデフォルトにtoString()使用を壊したくない場合はもちろん

public enum State{ 
    b("State B"), c("State C"), p("State P"); 

    private String longName; 
    private State(String longName) { 
     this.longName = longName; 
    } 
    @Override 
    public String toString() { 
     return this.longName; 
    } 
}; 

、あなたはと呼ばれる別のメソッドを作成することができますたとえば、はカスタム値を返します。

+0

'@Override public String toString {return" State "+ name()。toUpperCase(); } 'は宣言' a、c、p;の後に置くことができます。 – toto2

+0

あなたは絶対に正しいですが、私はサンプル文字列として '状態B'などを使っていました。たとえば、 'b'を' 'Banana''と' 'c''を' 'Coconut''にマッピングしたいと思うかもしれません。その場合、' toString() 'ロジックを実装するための難しくて速い方法はありません。 –

1

私はより複雑な何かをする傾向があるが、私はそれがより柔軟だと見つける:

public enum MyEnumeration { 
    SOME_NAME("Some Name"), 
    OTHER_THING("Other Thing"), 
    ... 
    MORE_VALUES("More Values"), 

    private final String displayName; 

    private MyEnumeration(String displayName) { 
     this.displayName = displayName; 
    } 

    public String getDisplayName() { 
     return displayName; 
    } 
} 

この道を、私はコードの私の列挙型のための標準的な大文字と小文字を使用していますが、彼らのためにもっとできる名前を持つことができます。 このトリックは、数字を初期化することによって序数を置き換えるためにも使用できます。次に、列挙を並べ替えることについて心配する必要はありません。

関連する問題