Единственная причина для использования getClass()
вместо instanceof
состоит в том, что нужно утверждать, что сравниваемые ссылки указывают на объекты точно такого же класса, а не объекты, реализующие один и тот же базовый класс.
Скажем, у нас есть Employee
e и Manager
m (расширяется Employee
).
m instanceof Employee
вернул бы true, m.getClass() == Employee.class
вернул бы false.
В некоторых случаях последний может быть предпочтительным, но редко в случае сравнения экземпляров в equals()
или hashCode()
методах.