Проверьте, является ли Object экземпляром String, HashMap или HashMap [] - PullRequest
12 голосов
/ 18 февраля 2012

У меня есть объект в Java.Есть ли способ проверить, является ли объект экземпляром String, HashMap или HashMap [], прежде чем фактически привести его к этим объектам?

Если нет, то, как кажется нелогичным, что вышеприведенное сработает, есть ли способ привести его к каждому объекту и проверить что-то относительно вновь приведенного объекта, чтобы увидеть, действительно ли это тип объекта, в которыйэто было брошено?

Ответы [ 2 ]

31 голосов
/ 18 февраля 2012

Да:

 if(obj instanceof String)
 {
     String str = (String) obj;
     .
     .
     .
 }

Кстати, чтобы уточнить относительно этого:

[…] проверить что-то о вновь приведенном объекте, чтобы увидеть, действительно ли это типобъекта, в который он был брошен?

Вы не можете преобразовать что-либо в недопустимый тип.Если obj имеет тип String, то ((Integer)obj) вызовет повышение ClassCastException во время выполнения.

8 голосов
/ 18 февраля 2012

Вы ищете оператора instanceof.

Оператор instanceof сравнивает объект с указанным типом. Вы может использовать его, чтобы проверить, является ли объект экземпляром класса, экземпляром подкласса, или экземпляр класса, который реализует определенный интерфейс.

Пример: "Hello" instanceof String вернет true, а new Integer(5) instanceof String вернет false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...