【发布时间】:2018-10-27 15:25:46
【问题描述】:
我有一个问题:我不知道我不能用 == 运算符比较两个不同的枚举。这是我的代码:
public class EnumExercises {
enum Seasons{
SPRING, WINTER;
Seasons() {
System.out.println("Hello");
}
}
enum TestResult {
PASS, FAIL, SPRING;
}
public static void main(String[] args) {
Seasons s = Seasons.WINTER;
Seasons s2 = Seasons.SPRING;
TestResult t = TestResult.PASS;
System.out.println(s2==t); //incompatible...why?
System.out.println(s2.equals(t));
}}
非常感谢。
【问题讨论】:
-
它们有不同的类型:TestResult 和 Seasons。
-
因为它们是枚举并不意味着它们是相同的类型。 stackoverflow.com/questions/1750435/…
-
Java 语言规范 JLS 15.21.3 参考相等比较 (docs.oracle.com/javase/specs/jls/se7/html/…):如果无法将任一操作数的类型转换为其他通过强制转换(§5.5)。两个操作数的运行时值必然不相等。
标签: java enums comparison