Какой самый простой способ сделать «есть» в Java?
-
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