Groovy / Grailsでデータ型を判別する方法は?


176

Groovyでデータ型を判別する最良の方法は何ですか?

日付などの場合、出力のフォーマットを変更したいのですが。

回答:


244

オブジェクトのクラスを決定するには、次を呼び出します。

someObject.getClass()

someObject.classほとんどの場合、これを省略できます。ただし、これを使用Mapすると、キー「クラス」で値を取得しようとします。このため、私は常に使用しますgetClass()、少し長くてもています。

オブジェクトが特定のインターフェースを実装しているか、または特定のクラス(たとえば、Date)を拡張しているかどうかを確認したい場合は、次のようにします。

(somObject instanceof Date)

またはオブジェクトのクラスがあるかどうかを確認するために、正確に特定のクラス(そのサブクラスではない)、使用:

(somObject.getClass() == Date)

2
instanceofインターフェースに基づくフィルタリングに最適です。
cdeszaq 2013

少なくとも最新のGroovy(2.3.7)では、someObject.classを作成することもできます
loloof64

5
ほとんどの場合で動作しますが、すべてではないで、例えばA @LaurentBERNABE Mapインスタンス
ドナル・

そうです、この場合はnullになります。間違いをお詫びします。
loloof64 2014年

それでこれは何ですか? def test = {} println test.getClass() クラスScript1 $ _run_closure1 ??
ペトルノフ2017年

33

オブジェクトの種類を確認する簡単な方法:

somObject in Date

インターフェースにも適用できます。


3

Dónalの回答に別のオプションを追加するためだけに、古き良きjava.lang.Object.getClass()方法を使用することもできます。


0

メンバーシップ演算子isCase()を使用することもできます。これはもう1つのすばらしい方法です。

assert Date.isCase(new Date())

-20

somObject instanceof Date

する必要があります

somObject instanceOf Date


11
これは正しくありません。instanceofすべて小文字にする必要があります。
cdeszaq
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.