我知道正确的方法是Days.MONDAY.name().equals(day)
。但我想知道为什么Days.MONDAY.equals(day)
都打印MONDAY时失败。使用JAVA中的字符串检查ENUM值的相等性
我知道我错过了equals()和toString()。我想清楚知道它是什么。
String day = "MONDAY";
System.out.println("main().Days.MONDAY : " + Days.MONDAY); // Prints MONDAY
System.out.println("main().day : " + day);// Prints MONDAY
System.out.println("main().Days.MONDAY.equals(day) : " + Days.MONDAY.equals(day)); // Why is this false when below is OK.
System.out.println("main().Days.MONDAY.toString().equals(day) : " + Days.MONDAY.toString().equals(day));// This is true
System.out.println("main().Days.MONDAY.name().equals(day) : " + Days.MONDAY.name().equals(day)); // This is true and I know this is the correct way
编辑:这是枚举。
enum Days{
MONDAY,TUESDAY,WEDENSDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY;
}
你正在比较一个字符串与一个枚举 - 它们不能相等... – assylias 2015-04-02 12:30:05
On'System.out.println(“main()。Days.MONDAY:”+ Days.MONDAY);'隐式'调用Days.MONDAY.toString()方法。 – SubOptimal 2015-04-02 12:30:19