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


¿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.

 149
Author: noah, 2010-01-14

5 answers

Para determinar la clase de un objeto simplemente llame:

someObject.getClass()

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 'class'. Debido a esto, siempre uso getClass() a pesar de que es un poco más largo.

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

(somObject instanceof Date)

O para comprobar si la clase de un objeto es exactamente un particular class (no una subclase de la misma), use:

(somObject.getClass() == Date)
 202
Author: Dónal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-22 08:24:51

Forma sencilla de comprobar el tipo de objeto:

somObject in Date

Se puede aplicar también a interfaces.

 28
Author: Michal Z m u d a,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-09 20:02:13

Solo para agregar otra opción a la respuesta de Don, también puede usar el buen método java.lang.Object.getClass().

 3
Author: Pops,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-17 15:56:30

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

assert Date.isCase(new Date())
 0
Author: bitsnaps,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-25 09:36:09

somObject instanceof Date

Debe ser

somObject instanceOf Date

 -19
Author: Mike N,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-12 13:13:42