Groovy / grails como determinar um tipo de dados?


176

Qual é a melhor maneira de determinar o tipo de dados no groovy?

Gostaria de formatar a saída de forma diferente se for uma data etc.

Respostas:


244

Para determinar a classe de um objeto, basta chamar:

someObject.getClass()

Você pode abreviar isso para someObject.classna maioria dos casos. No entanto, se você usar isso em um, Mapele tentará recuperar o valor com a chave 'class'. Por isso, eu sempre usogetClass() mesmo que seja um pouco mais.

Se você deseja verificar se um objeto implementa uma interface específica ou estende uma classe específica (por exemplo, Data), use:

(somObject instanceof Date)

ou para verificar se a classe de um objeto é exatamente uma classe específica (não uma subclasse), use:

(somObject.getClass() == Date)

2
instanceofé ótimo para filtragem com base na interface.
Cdeszaq # 12/13

Pelo menos no Groovy mais recente (2.3.7), também podemos escrever someObject.class
loloof64

5
@LaurentBERNABE que funciona na maioria dos casos, mas não em todos, por exemplo, uma Mapinstância
Dónal

Você está certo: ficamos nulos neste caso. Pedindo desculpas pelo erro.
precisa saber é o seguinte

Então o que é isso? def test = {} println test.getClass() classe Script1 $ _run_closure1 ??
Petrunov

33

Maneira simples e simples de verificar o tipo de objeto:

somObject in Date

Pode ser aplicado também a interfaces.


3

Apenas para adicionar outra opção à resposta de Dónal, você também pode usar o bom e velho java.lang.Object.getClass()método.


0

Você pode usar o operador de associação isCase (), que é outra maneira interessante:

assert Date.isCase(new Date())

-20

somObject instanceof Date

deveria estar

somObject instanceOf Date


11
Isso não está correto. instanceoftodos devem estar em letras minúsculas.
Cdeszaq #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.