Java Enum等于

时间:2015-09-25 13:27:22

标签: java enums

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?我不确定?当我们能得到“平等”的结果时呢?

1 个答案:

答案 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的实现相同,即它仅比较引用。