如何在Java中比较字符串与枚举类型?

Max*_*eng 10 java string enums compare

我有一份美国所有州的枚举列表如下:

public enum State
{ AL, AK, AZ, AR, ..., WY }
Run Code Online (Sandbox Code Playgroud)

在我的测试文件中,我将从包含状态的文本文件中读取输入.由于它们是字符串,我如何将它与枚举列表的值进行比较,以便为我设置的变量赋值:

private State state;
Run Code Online (Sandbox Code Playgroud)

我知道我需要通过枚举列表.但是,由于值不是字符串类型,您如何比较它?这就是我盲目打字的原因.我不知道它是否正确.

public void setState(String s)
{
    for (State st : State.values())
    {
        if (s == State.values().toString())
        {
           s = State.valueOf();
           break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

mae*_*tr0 25

试试这个

public void setState(String s){
 state = State.valueOf(s);
}
Run Code Online (Sandbox Code Playgroud)

如果"s"值与任何"State"不匹配,您可能希望处理可能抛出的IllegalArgumentException

  • 它应该处理`IllegalArgumentException`. (4认同)

Bhe*_*ung 5

使用.name()方法。喜欢st.name()。例如,State.AL.name()返回字符串“ AL”。

所以,

if(st.name().equalsIgnoreCase(s)) {
Run Code Online (Sandbox Code Playgroud)

应该管用。