Digamos que tengo un simple enumeración llamada Animal define como:¿Cómo obtengo el nombre de clase "valueOf"?
public enum Animal {
CAT, DOG
}
y tengo un método como:
private static Object valueOf(String value, Class<?> classType) {
if (classType == String.class) {
return value;
}
if (classType == Integer.class) {
return Integer.parseInt(value);
}
if (classType == Long.class) {
return Long.parseLong(value);
}
if (classType == Boolean.class) {
return Boolean.parseBoolean(value);
}
// Enum resolution here
}
Qué puedo poner dentro de este método para devolver una instancia de mi enum donde el valor es del classType?
He mirado tratar:
if (classType == Enum.class) {
return Enum.valueOf((Class<Enum>)classType, value);
}
Pero eso no quiere trabajar.
Pero Class no anula equals(), por lo que supongo que equals() tampoco funcionará si hay varios cargadores de clases. – waxwing
Umm, supongo que tienes razón. En realidad, no sé cómo los cargadores de varias clases funcionan juntos, ni si es realmente probable (o incluso posible) que existan varias instancias del mismo objeto de clase. Quizás 'Class # isAssignableFrom()' podría ser utilizado también. Dicho esto, usar 'igual()' no es malo. –