Groovy / grils ¿cómo determinar un tipo de datos?

176

¿Cuál es la mejor manera de determinar el tipo de datos en groovy?

Me gustaría formatear la salida de manera diferente si es una fecha, etc.

Jack BeNimble
fuente

Respuestas:

244

Para determinar la clase de un objeto simplemente llame:

someObject.getClass()

Puede abreviar esto someObject.classen 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 usogetClass() aunque sea un poco más largo.

Si desea verificar si un objeto implementa una interfaz particular o extiende una clase particular (por ejemplo, Fecha) use:

(somObject instanceof Date)

o para verificar si la clase de un objeto es exactamente una clase particular (no una subclase de él), use:

(somObject.getClass() == Date)
Dónal
fuente
2
instanceofEs ideal para el filtrado basado en la interfaz.
cdeszaq
Al menos en el último Groovy (2.3.7), también podemos escribir someObject.class
loloof64 el
55
@LaurentBERNABE que funciona en la mayoría de los casos, pero no en todos, por ejemplo, una Mapinstancia
Dónal
Tienes razón: nos volvemos nulos en este caso. Disculpándose por el error.
loloof64
Entonces que es esto? def test = {} println test.getClass() clase Script1 $ _run_closure1 ??
Petrunov
33

Manera simple y maravillosa de verificar el tipo de objeto:

somObject in Date

Se puede aplicar también a las interfaces.

Michal Z muda
fuente
3

Solo para agregar otra opción a la respuesta de Dónal, también puedes usar el java.lang.Object.getClass()método antiguo .

Estallidos
fuente
0

Puede usar el Operador de membresía isCase (), que es otra forma genial:

assert Date.isCase(new Date())
Ibrahim.H
fuente
-20

somObject instanceof Date

debiera ser

somObject instanceOf Date

Mike N
fuente
11
Esto no es correcto. instanceofdebería estar todo en minúsculas.
cdeszaq