2011-07-29 8 views
6

私は列挙型を持っています。例えば、enum Color { Red, Brown }です。列挙型を比較す​​る最善の方法

if (c1 == Color.Brown) { 
    //is brown 
} 

または

if (c1.equals(Color.Brown)) { 
    //is brown 
} 
+2

いずれかは問題ありませんが、簡単にするためには==を付けてください。 –

+0

私は '.equals(...) 'と一緒に行くと、私はもっと幸せになれます。 :D – Moonbeam

+0

私は定数を左に置くことを好みます。そうすれば、誤って=を入れた場合、コンパイラエラーが発生します。 Color.Brown == c1 – QuentinUK

答えて

13

使用==:一定の値と比較するための最良の方法は何

Color c1 = Brown, c2 = Red 

:私も、その型の変数をいくつか持っています。同じ列挙定数の複数のインスタンス(クラスローダーのコンテキスト内ではありませんが、その点は無視してください)は存在しないため、常に安全です。

つまり、equals()を使用すると安全でもあり、参照の平等も実行します。それはかなり多くのスタイルの選択です。

個人的には、私はほとんど列挙型のためにifステートメントを使用して自分自身を見つけることはほとんどありません。私はブロックswitchを好む。

switch (c1) { 
    case Brown: 
     //is brown 
     break; 
    case Red: 
     //... 
} 
+0

このコードスニペットは私を悲しいパンダにします。 D: – Moonbeam

+1

@ムーンビーム:どうしてですか?明らかにそれは人為的な例ですが、私のものではなくOPの例です。 –

+3

enums変数がnullになることができるため、==を使用します。 equals()を使用する理由はありません。 –

関連する問題