2010-01-13 17 views

Respuesta

179

Para determinar la clase de un objeto simplemente llaman:

someObject.getClass() 

se puede abreviar esto a someObject.class en la mayoría de los casos . Sin embargo, si usa esto en un Map, intentará recuperar el valor con la clave 'clase'. Debido a esto, siempre utilizo getClass() aunque es un poco más largo.

Si desea comprobar si un objeto implementa una interfaz en particular o se extiende una clase particular (por ejemplo, Fecha) utilizar:

(somObject instanceof Date) 

o para comprobar si la clase de un objeto es exactamente una clase particular (no es una subclase de la misma), utilice:

(somObject.getClass() == Date) 
+2

'instanceof' es grande para el filtrado basado en la interfaz. – cdeszaq

+0

Al menos en el último Groovy (2.3.7), también podemos escribir algúnObjeto.class – loloof64

+4

@LaurentBERNABE que funcione en la mayoría de los casos, pero no en todos, p. una instancia 'Map' –

3

sólo para añadir otra opción de respuesta de Don, también se puede seguir utilizando el viejo método buena java.lang.Object.getClass().

-16

somObject instanceof Date

debería ser

somObject instanceOf Date

+8

Esto no es correcto. 'instanceof' debe estar todo en minúsculas. – cdeszaq

26

manera maravilloso simple para comprobar el tipo de objeto:

somObject in Date 

Se puede aplicar también a las interfaces.

+3

solución más maravillosa hasta el momento – user615274

0

Se puede utilizar el operador de miembro isCase() que es otra forma maravillosa:

assert Date.isCase(new Date()) 
Cuestiones relacionadas