Me resulta difícil poner la pregunta exacta en palabras, así que solo daré un ejemplo.Obtener instancia de Enum de la clase <? extiende Enum> usando el valor de cadena?
Tengo dos tipos: Enum
enum Shape {
CAT, DOG;
}
enum Color {
BLUE, RED;
}
tengo un método:
public Object getInstance(String value, Class<?> type);
me gustaría utilizar un método similar:
// someValue is probably "RED", and someEnumClass is probably Color.class
Color c = getInstance(someValue, someEnumClass);
he tenido problemas para determinar exactamente cómo implementar getInstance()
. Una vez que sepa la clase exacta Enum
que desea crear una instancia, es fácil:
Color.valueOf("RED");
Pero ¿cómo puede esta línea anterior puede lograr con un desconocido Class
? (Sin embargo, se sabe que el someEnumClass
es una subclase de Enum
).
¡Gracias!
+1 enumeraciones se construyen para que no necesita pasar por la maquinaria de reflexión tú mismo. Bien analizado y descubierto. –
¿Por qué? Porque él lo pidió. Traté de señalar la solución a su pregunta. – chahuistle
Excelente, gracias por la solución y una explicación detallada. El método Enum.valueOf() funcionó perfectamente. –