Check equality of a ENUM value with a String in JAVA
我知道正确的方法是
我知道我缺少equals()和toString()的东西。我想清楚地知道是什么。
1 2 3 4 5 6 7 | 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 |
编辑:这是枚举。
1 2 3 | enum Days{ MONDAY,TUESDAY,WEDENSDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY; } |
枚举的equals方法比较枚举的静态实例。因为枚举的任何表示都指向同一对象实例。因此,枚举的equals方法没有比较名称,也没有对实例进行ToString比较。
类
其中一种方法是
为了保持对称性要求,在
不要将
当你发送一个对象到
即使
看看在Java中使用枚举是可以的。基于此,Java在EnUM上实现等值仅执行= =。由于示例中的枚举和
1 |
上面的行在常量池中创建
1 2 3 | public enum Days{ MONDAY <-- Created in HEAP } |
现在来到
1 | Days.MONDAY.equals(day) --> Why False ? |
枚举的
1 | Days.MONDAY.toString().equals(day) --> Why true ? |
因为它是