【发布时间】:2015-04-02 12:27:01
【问题描述】:
我知道正确的方法是Days.MONDAY.name().equals(day)。但我想知道为什么Days.MONDAY.equals(day) 在两者都打印 MONDAY 时会失败。
我知道我缺少 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;
}
【问题讨论】:
-
您正在将字符串与枚举进行比较——它们不能相等...
-
在
System.out.println("main().Days.MONDAY : " + Days.MONDAY);上隐式调用Days.MONDAY.toString()方法。
标签: java enums equals tostring