Какой самый простой способ сделать «есть» в Java?

StackOverflow https://stackoverflow.com/questions/237464

  •  04-07-2019
  •  | 
  •  

Вопрос

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

if(obj is MyType)

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

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

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

Это было полезно?

Решение

if (objectReference instanceof type){
    //Your code goes here
}

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

Другие советы

Вы можете использовать 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

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

См. учебник Sun

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top