我如何比较两个枚举?

时间:2012-12-04 18:25:21

标签: java enums

我有一个名为PawnColor的枚举,它只包含以下内容:

public enum PawnColor {
    black, white, none, illegal
}

如果我有以下方法,我怎样才能检查当前PawnColor实例的颜色?

public double ratePosition (PawnColor ratingFor)  {
    // ...
}

因此,如果ratingFor的颜色为illegal,我该如何检查?我以前从未使用过枚举,我无力地尝试过:

if(ratingFor.equals(illegal)) {
    System.out.println("Something has gone wrong.");
}

它显然不起作用,当PawnColor ratingFor非法时,我如何确保收到错误消息?

5 个答案:

答案 0 :(得分:0)

我在本地测试了这个,并且正确打印了错误消息。

PawnColor ratingFor = PawnColor.illegal;
if(ratingFor == PawnColor.illegal)
{
    System.out.println("Something has gone wrong.");
}

答案 1 :(得分:0)

应该是:

if (ratingFor == illegal)

答案 2 :(得分:0)

您需要将illegal称为PawnColor.illegal

只需使用==

   if(ratingFor == PawnColor.illegal)

您也可以使用equals作为:

   if(PawnColor.illegal.equals(ratingFor))

答案 3 :(得分:0)

对于枚举常量,等于和= =相同,可以交替使用

答案 4 :(得分:0)

if(ratingFor.equals(illegal)) {
    System.out.println("Something has gone wrong.");
}

这里你不能引用“非法”,ratingFor只能与PawnColor.class类型进行比较。

ratingFor == PawnColor.illegal 

ratingFor.equals(PawnColor.illegal)

将为您提供所需的结果