2011-07-29 9 views
6

Tengo una enumeración, por ejemplo enum Color { Red, Brown }. También tengo algunas variables de ese tipo:La mejor forma de comparar enumeraciones

Color c1 = Brown, c2 = Red 

lo que es mejor manera de comparar a un valor constante:

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

o

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

Cualquiera está bien, pero creo que por simplicidad, voy con ==. –

+0

Iría con '.equals (...)' porque me hace más feliz. : D – Moonbeam

+0

Prefiero poner la constante a la izquierda. De esa forma, si pone accidentalmente = obtiene un error de compilación. Color.Brown == c1 – QuentinUK

Respuesta

13

Use ==. No puede haber varias instancias de la misma constante enum (dentro del contexto de un cargador de clases, pero ignoremos ese punto) para que siempre sea seguro.

Dicho esto, usar equals() también es seguro y también realizará igualdad de referencia. Es más o menos una elección de estilo.

Personalmente, muy rara vez me encuentro usando if declaraciones para enumeraciones en absoluto. Estoy a favor de los bloques switch.

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

Ese fragmento de código me convierte en un panda triste. D: – Moonbeam

+1

@ Moobeam: ¿Por qué es eso? Obviamente es un ejemplo artificial, pero es el ejemplo del OP, no el mío. –

+3

Use == porque las variables enums tienen permitido ser nulas. No hay razón para que IMO use iguales() –

Cuestiones relacionadas