Tengo un objeto. Quiero verificar si es de tipo enum. Hay dos maneras de hacer esto.¿Es mejor usar class.isEnum() o instancia de Enum?
object.getClass().isEnum()
o
object instanceof Enum
Es uno mejor?
Tengo un objeto. Quiero verificar si es de tipo enum. Hay dos maneras de hacer esto.¿Es mejor usar class.isEnum() o instancia de Enum?
object.getClass().isEnum()
o
object instanceof Enum
Es uno mejor?
En mi opinión object instanceof Enum
es mejor por varias razones:
NullPointerException
(si es object
null
, sólo se evalúan como false
)La única razón por la que vería por usar isEnum()
sería si sólo tengo acceso al objeto Class
y no a un caso concreto.
+1 sobre NPE. Lo estoy haciendo en este momento en un bucle y no estaba seguro si importaría –
En cuanto al rendimiento, 'instanceof' también funciona más rápido (varía según la clase que se prueba, pero para todas mis pruebas ha sido al menos 33% más rápido que 'isEnum', el más rápido ha sido aproximadamente 450% más rápido). isEnum: 2691826 instanciade: 658774 – ty1824
@ ty1824 - impresionante. Las estadísticas son exactamente lo que estaba buscando –
Por "mejor", ¿quiere decir "más fácil de leer", "funciona más rápido", etc.? – templatetypedef
@templatetypedef Principalmente el rendimiento es más fácil de leer. –
Si necesita determinar si un objeto es un Enum, entonces la pregunta que debería hacerse es "¿Por qué estoy usando este diseño terrible?". – DwB