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.