class Enum{
enum Season { WINTER, SPRING, SUMMER, FALL }
public static void main(String[] args) {
System.out.println(new Enum().pf());
}
String pf() {
if (Season.WINTER.equals("WINTER")) return "equal";
else return "not equal";
}
}
为什么结果不相等。是因为Season.WINTER是一个对象,而不是一个String?我不确定?当我们能得到“平等”的结果时呢?
答案 0 :(得分:3)
您正在将枚举类型与String
进行比较,后者将返回false
。
您可以在枚举类型上调用name()
,将其与String
进行比较。
否则,您可以使用switch
语句。
另请参阅枚举的equals
实现(来自Oracle Java 8的源代码):
/**
* Returns true if the specified object is equal to this
* enum constant.
*
* @param other the object to be compared for equality with this object.
* @return true if the specified object is equal to this
* enum constant.
*/
public final boolean equals(Object other) {
return this==other;
}
从示例中可以看出,enum
的实现与Object
的实现相同,即它仅比较引用。