2011-08-14 31 views

Respuesta

123

Espero que sepas, java.util.Enumeration es diferente de la Java 1.5 Enum tipos.

Puede simplemente usar YourEnum.valueOf("String") para obtener el tipo de enumeración equivalente.

Por lo tanto, si su enumeración se define como así:

public enum Day { 
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 
    THURSDAY, FRIDAY, SATURDAY 
} 

Usted puede hacer esto:

String day = "SUNDAY"; 

Day dayEnum = Day.valueOf(day); 
+0

sí gracias acaba de ver esto http://download.oracle.com/javase/1,5.0/docs/api/java/lang/Enum.html – Ankur

13

suponiendo que el uso de Java 5 enumeraciones (que no es tan seguro ya que lo mencionas vieja clase Enumeration), puede utilizar el método valueOf de java.lang.Enum subclase:

MyEnum e = MyEnum.valueOf("ONE_OF_CONSTANTS"); 
4

Uso método estático valueOf(String) define para cada enum.

Por ejemplo, si tiene enum MyEnum se puede decir MyEnum.valueOf("foo")

0

que podría haber más de la ingeniería mi propia solución sin darse cuenta que en realidad existía Type.valueOf("enum string").

Supongo que ofrece un control más granular, pero no estoy seguro de que sea realmente necesario.

public enum Type { 
    DEBIT, 
    CREDIT; 

    public static Map<String, Type> typeMapping = Maps.newHashMap(); 
    static { 
     typeMapping.put(DEBIT.name(), DEBIT); 
     typeMapping.put(CREDIT.name(), CREDIT); 
    } 

    public static Type getType(String typeName) { 
     if (typeMapping.get(typeName) == null) { 
      throw new RuntimeException(String.format("There is no Type mapping with name (%s)")); 
     } 
     return typeMapping.get(typeName); 
    } 
} 

Creo que se está intercambiando IllegalArgumentException para RuntimeException (o lo que sea la excepción que desea tirar) que potencialmente podrían limpiar el código.

Cuestiones relacionadas