如何在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; } } } 

试试这个

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

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

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

所以,

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

应该管用。

将枚举与字符串进行比较

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