2011-08-11 11 views
12

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?

+2

Por "mejor", ¿quiere decir "más fácil de leer", "funciona más rápido", etc.? – templatetypedef

+0

@templatetypedef Principalmente el rendimiento es más fácil de leer. –

+0

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

Respuesta

20

En mi opinión object instanceof Enum es mejor por varias razones:

  • es muy obvio lo que se pide aquí: "Es esta una enumeración"?
  • él no arriesga un NullPointerException (si es objectnull, sólo se evalúan como false)
  • Es más corto.

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.

+0

+1 sobre NPE. Lo estoy haciendo en este momento en un bucle y no estaba seguro si importaría –

+1

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

+0

@ ty1824 - impresionante. Las estadísticas son exactamente lo que estaba buscando –

Cuestiones relacionadas