0

以下を単純に含む PawnColor という名前の列挙型があります。

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

次のメソッドがある場合、PawnColor の現在のインスタンスの色を確認するにはどうすればよいでしょうか?

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

それでratingFor、 color: があった場合illegal、どうすればこれを確認できますか? 私はこれまで列挙型を扱ったことがありませんでした。

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

明らかにうまくいきませんでした。PawnColor ratingFor が違法である場合にエラー メッセージが表示されるようにするにはどうすればよいですか?

4

5 に答える 5

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

ここで「不正」を参照することはできません。ratingFor は PawnColor.class 型とのみ比較できます。

ratingFor == PawnColor.illegal 

また

ratingFor.equals(PawnColor.illegal)

望ましい結果が得られます

于 2012-12-05T05:53:30.613 に答える
0

列挙型定数の場合、equals と == は同じものであり、同じ意味で使用できます。

于 2012-12-04T18:31:00.620 に答える
0

これをローカルでテストしたところ、エラー メッセージが正しく出力されました。

PawnColor ratingFor = PawnColor.illegal;
if(ratingFor == PawnColor.illegal)
{
    System.out.println("Something has gone wrong.");
}
于 2012-12-04T18:26:34.710 に答える
0

そのはず:

if (ratingFor == illegal)
于 2012-12-04T18:27:15.547 に答える
0

illegalとして参照する必要がありますPawnColor.illegal

単純に次のように使用==します。

   if(ratingFor == PawnColor.illegal)

次のように使用することもできますequals

   if(PawnColor.illegal.equals(ratingFor))
于 2012-12-04T18:27:44.470 に答える