Estoy tratando de buscar contra un conjunto Enum, sabiendo que a menudo habrá un no coincidente que arroja una excepción: me gustaría verificar que el valor exista antes de realizar la búsqueda para evitar las excepciones Mi enumeración es como la siguiente:Verificar valores de enum válidos antes de usar enum
public enum Fruit {
APPLE("apple"),
ORANGE("orange");
;
private final String fruitname;
Fruit(String fruitname) {
this.fruitname = fruitname;
}
public String fruitname() {return fruitname;}
}
y quiero comprobar si, por ejemplo, "banana" es uno de mis valores de enumeración antes de intentar utilizar la enumeración correspondiente. Podría iterar a través de los valores permisibles comparando mi cadena a
Fruit.values()[i].fruitname
pero me gustaría ser capaz de hacer algo así (pseduo de código):
if (Fruit.values().contains(myStringHere)) {...
Es eso posible? ¿Debo usar algo completamente diferente (Arrays? Maps?)?
EDITAR: al final me he ido con la sugerencia de NawaMan, pero gracias a todos por toda la ayuda.
"values ()" crea una matriz clonada cada vez, por lo que es mejor no llamarla con demasiada frecuencia. Llámelo solo una vez y guarde en caché los resultados, o use "EnumSet.allOf (Fruit.class)". – dogbane
En JDK 1.7 se arregló. En JDK 1.5 hay comentarios para arreglar esto más tarde. No sé lo que sucede en JDK 1.6. – alexsmail
Tenga en cuenta que esta solución es lenta para muchos valores. Es mejor hacer algo como http://stackoverflow.com/a/2546726/260805 en su lugar. – Ztyx