我有我已經在下面way-將枚舉常量與沒有valueOf或toString的字符串進行比較?
String myVariable ="MY_CONSTANT1";
System. out.println(MyEnum.MY_CONSTANT1.toString().equals(myVariable));
以上返回true,這是可以理解定義一些常量
public enum MyEnum{
MY_CONSTANT1,
MY_CONSTANT2
}
現在比較字符串枚舉常量之一任何枚舉。
現在,當我做下面----
String myVariable ="MY_CONSTANT1";
System.out.println(MyEnum.MY_CONSTANT1.equals(myVariable));
上面的代碼返回false。爲什麼這樣?
因爲您正在比較不同類型的對象。 'MY_CONSTANT1'是'MyEnum'類型的實例,'myVariable'是'String'。爲什麼這些都是平等的? – Pshemo
順便說一下,儘管'toString()'在這種情況下起作用,最好使用設計用於返回名稱爲name()的枚舉值的方法。所以你應該使用'MyEnum.MY_CONSTANT1.name()。equals(myVariable)',或者如果你的目標是找到指定名稱的枚舉,你可以使用'MyEnum.valueOf(myVariable)'。 – Pshemo
@Pshemo好吧,我感到困惑。我認爲枚舉不斷內部得到遵守字符串。所以我認爲比較應該是罰款..看起來像這樣的情況..枚舉常量有枚舉的類型 – user2713255