Groovy / grails如何确定数据类型?


176

确定Groovy中数据类型的最佳方法是什么?

如果是日期等,我想以不同的方式设置输出格式。

Answers:


244

要确定对象的类,只需调用:

someObject.getClass()

someObject.class在大多数情况下,您可以将其缩写为。但是,如果在a上使用Map它,它将尝试使用键“ class”检索值。因此,getClass()即使更长一点,我也总是使用。

如果要检查对象是否实现特定接口或扩展特定类(例如Date),请使用:

(somObject instanceof Date)

或检查对象的类是否完全是特定的类(而不是其子类),请使用:

(somObject.getClass() == Date)

2
instanceof非常适合基于接口进行过滤。
cdeszaq 2013年

至少在最新的Groovy(2.3.7)中,我们还可以编写someObject.class
loloof64,2014年

5
@LaurentBERNABE,在大多数情况下工作,但不是在所有的,例如Map实例
多纳尔

您是对的:在这种情况下,我们得到null。为错误表示歉意。
loloof64 2014年

那这是什么 def test = {} println test.getClass() class Script1 $ _run_closure1 ??
Petrunov

33

检查对象类型的简单常规方法:

somObject in Date

也可以应用于接口。


3

只是为Dónal的答案添加了另一个选项,您仍然可以使用旧java.lang.Object.getClass()方法。


0

您可以使用Membership Operator isCase(),这是另一种常规的方式:

assert Date.isCase(new Date())

-20

somObject instanceof Date

应该

somObject instanceOf Date


11
这是不正确的。instanceof应该全部小写。
cdeszaq
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.