2010-01-13 2 views

ответ

179

Чтобы определить класс объекта просто вызовите:

someObject.getClass() 

Вы можете сократить это someObject.class в большинстве случаев , Однако, если вы используете это на Map, он попытается получить значение с помощью ключа «class». Из-за этого я всегда использую getClass(), хотя это немного дольше.

Если вы хотите проверить, если объект реализует определенный интерфейс или расширяет конкретный класс (например, дата) использование:

(somObject instanceof Date) 

или проверить, если класс объекта является точно конкретный класс (не подкласс этого), используйте:

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

'instanceof' отлично подходит для фильтрации на основе интерфейса. – cdeszaq

+0

По крайней мере, в последнем Groovy (2.3.7) мы также можем написать someObject.class – loloof64

+4

@LaurentBERNABE, который работает в большинстве случаев, но не во всех, например. экземпляр 'Map' –

3

Просто добавить еще один вариант ответа Дона, вы можете все еще использовать старый добрый java.lang.Object.getClass() метод.

-16

somObject instanceof Date

должен быть

somObject instanceOf Date

+8

Неправильное использование. 'instanceof' должен быть в нижнем регистре. – cdeszaq

26

Простой заводной способ проверить тип объекта:

somObject in Date 

Может применяться также к интерфейсам.

+3

Самое главное решение – user615274

0

Вы можете использовать членство оператор isCase(), который является еще одним заводным способом:

assert Date.isCase(new Date()) 
Смежные вопросы