Найти тему
DEBAGanov

Java 116. В чем разница применения if(obj instanceof Student) и if(getClass() == obj.getClass())?

Оба выражения, obj instanceof Student и getClass() == obj.getClass(), используются для проверки типа объекта в Java.

Однако есть различия между ними:

  • obj instanceof Student позволяет проверить, является ли объект obj экземпляром класса Student или его подклассов. Это означает, что если obj является экземпляром класса, производного от Student, то условие также будет выполнено. Например, если у нас есть классы Person и Student, и класс Student наследуется от класса Person, то выражение obj instanceof Student вернет true как для объектов класса Student, так и для объектов класса Person, если они были созданы с использованием ключевого слова new для класса Student.
  • getClass() == obj.getClass() проверяет, является ли тип объекта obj точно таким же, как тип класса, в котором выполняется код. Если это условие истинно, это означает, что объект obj был создан с использованием ключевого слова new для этого класса (или его подкласса), и он не является объектом другого класса или его подкласса.

Таким образом, если нам нужно проверить тип объекта без учета его подклассов, мы можем использовать getClass() == obj.getClass(). Использование instanceof подходит, когда мы хотим проверить, является ли объект экземпляром класса или его подкласса.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov