Estoy tratando de saber si una clase es una enumeración, pero creo que me falta algo:Comprobación de si una clase es java.lang.Enum
if (test.MyEnum.class instanceof Enum<?>.class)
obj = resultWrapper.getEnum(i, test.MyEnum.class);
else
obj = resultWrapper.getObject(i);
Me da un error que dice que Enum .class no es válido. Entonces, ¿cómo puedo verificar si una clase es un Enum? Estoy bastante seguro de que es posible determinar eso, simplemente no puedo obtenerlo.
Gracias
de 'isEnum()'. Devuelve falso si su clase es una clase anónima creada por uno de los valores enum que anulan un método. – Trejkaz
@Trejkaz ¿Podrías dar más detalles sobre eso? No te estoy siguiendo exactamente –
Si tienes métodos en tu enumeración, los valores individuales de la enumeración pueden anularlos. Si anula cualquiera de estos métodos, crea una clase anónima que es una subclase de la enumeración. isEnum() para esa clase devuelve falso. Por lo tanto, aunque EnumClass.class.isEnum() devuelve verdadero, EnumClass.SOME_VALUE.getClass(). IsEnum() puede devolver falso, por lo que debe tener cuidado de dónde obtiene la clase. Por ejemplo, si está escribiendo un método de utilidad para que otros lo llamen, usar isEnum() sería una mala idea y usar Enum.class.isAssignableFrom (clazz) sería más seguro. – Trejkaz