Какой самый простой способ сделать «есть» в Java? - PullRequest
6 голосов
/ 26 октября 2008

Многие языки имеют возможность проверить, принадлежит ли объект определенного типа (включая родительские подклассы), реализован с помощью 'is' и используется ли он так:

if(obj is MyType)

Или, что более утомительно, вы можете проверить на других языках, используя ключевое слово «as», чтобы выполнить мягкую типизацию и посмотреть, равен ли результат нулю.

Я не пользовался Java годами, и я быстро вернулся к этому, но, безусловно, у Java есть способ легко сделать это, не углубляясь в API Reflection?

Заранее спасибо за ответы. Я искал и здесь, и в других местах, но ключевые слова настолько общие, что, хотя я уверен, что у этого есть простой ответ, поискать его трудно.

Ответы [ 3 ]

16 голосов
/ 26 октября 2008
if (objectReference instanceof type){
    //Your code goes here
}

Подробнее здесь .

7 голосов
/ 26 октября 2008

Вы можете использовать instanceof только с литералом класса:

Class type = String.class;

if (myObj instanceof String) // will compile

if (myObj instanceof type) //will not compile

Альтернативой является использование метода Class.isInstance

if (type.isInstance(myObj)) // will compile
1 голос
/ 26 октября 2008

obj instanceof TargetType возвращает true только в случае, если TargetType находится в иерархии типов, содержащей obj.

См. Учебник Sun

...