2010-01-13 13 views

Antwort

179

die Klasse eines Objekts rufen Sie einfach zu bestimmen:

someObject.getClass() 

Sie dies in den meisten Fällen zu someObject.class abkürzen kann . Wenn Sie dies jedoch auf einem Map verwenden, versucht es, den Wert mit Schlüssel 'Klasse' abzurufen. Aus diesem Grund verwende ich immer getClass(), obwohl es ein wenig länger ist.

Wenn Sie überprüfen wollen, ob ein Objekt eine bestimmte Schnittstelle implementiert oder erweitert eine bestimmte Klasse (zB Datum) verwenden:

(somObject instanceof Date) 

oder zu überprüfen, ob die Klasse eines Objekts ist genau eine bestimmte Klasse (nicht eine Unterklasse davon) verwenden:

(somObject.getClass() == Date) 
+2

'instanceof' ist für Filterung basierend auf der Schnittstelle. – cdeszaq

+0

Zumindest im neuesten Groovy (2.3.7) können wir auch someObject.class – loloof64

+4

@ LaurentBERNABE schreiben, das in den meisten Fällen funktioniert, aber nicht in allen, z.B. eine 'Map'-Instanz –

3

einfach eine andere Option zu Don Antwort hinzufügen möchten, können Sie auch noch die gute alte java.lang.Object.getClass() Methode.

-16

somObject instanceof Date

sollte

somObject instanceOf Date

+8

Dies ist nicht korrekt. "instanceof" sollte in Kleinbuchstaben geschrieben sein. – cdeszaq

26

Einfache groovy Weg Objekttyp zu überprüfen:

somObject in Date 

Kann auch auf Schnittstellen angewendet werden.

+3

grooviest Lösung so weit – user615274

0

Sie können die Mitgliedschaft Operator isCase() verwenden, die eine andere groovy Art und Weise ist:

assert Date.isCase(new Date()) 
Verwandte Themen