web-dev-qa-db-ja.com

Javaで文字列を列挙型と比較する方法は?

私は次のように米国のすべての州の列挙型リストを持っています:

public enum State
{ AL, AK, AZ, AR, ..., WY }

テストファイルでは、状態を含むテキストファイルから入力を読み取ります。それらは文字列なので、次のように設定した変数に値を割り当てるために、列挙型リストの値と比較するにはどうすればよいですか?

private State state;

列挙型リストを確認する必要があることを理解しています。ただし、値は文字列タイプではないため、どのように比較できますか?これは私が盲目的にタイプするものです。それが正しいかどうかはわかりません。

public void setState(String s)
{
    for (State st : State.values())
    {
        if (s == State.values().toString())
        {
           s = State.valueOf();
           break;
        }
    }
}
9
Maximus Seng

これを試して

public void setState(String s){
 state = State.valueOf(s);
}

「s」の値がどの「State」とも一致しない場合にスローされる可能性のあるIllegalArgumentExceptionを処理することをお勧めします

24
maestr0

.name()メソッドを使用します。 st.name()のように。例えばState.AL.name()は文字列 "AL"を返します。

そう、

if(st.name().equalsIgnoreCase(s)) {

動作するはずです。

5
Bhesh Gurung

列挙型と文字列を比較するには

for (Object s : State.values())
    {
            if (theString.equals(s.toString()))
        {
            // theString is equal State object

        }
    }
2
technomage