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.

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)

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.


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 .


0

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

assert Date.isCase(new Date())

-20

somObject instanceof Date

debiera ser

somObject instanceOf Date


11
Esto no es correcto. instanceofdebería estar todo en minúsculas.
cdeszaq
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.