obj.getClass()
вернет класс времени выполнения объекта, то есть он проверит во время выполнения, на что указывает ссылка Object
.
Это упоминается в Java doc метода getClass()
:
Возвращает класс времени выполнения этого объекта
В качестве простого теста вы можете убедиться, что getClass
проверяет тип объекта во время выполнения:
public static void main(String[] args) {
String s = "hello";
test(s);
}
public static void test(Object o){
System.out.println(o.getClass());
}
Здесь вывод будет относиться к классу String
, хотя ссылочный тип во время компиляции - Object
:
class java.lang.String
Таким образом, в вашем методе false
не будет возвращено, если экземпляр Person
передан методу equals
. Но если это не экземпляр Person
, тогда getClass() != obj.getClass()
будет true
и equals
выйдет с false
в качестве возвращаемого значения.