Я думаю, что официальный documentation дает ответ на этот (хотя и в довольно неспецифической образом):
Этот метод является динамический эквивалент языка Java InstanceOf оператора.
Я предполагаю, что isInstance()
предназначен, прежде всего, для использования в коде, касающемся отражения типа во время выполнения. В частности, я бы сказал, что он существует для обработки случаев, когда вы, возможно, заранее не знаете тип (ы) класса (ов), который вы хотите проверить на членство заранее (редко, хотя эти случаи, вероятно, есть).
Например, вы можете использовать его, чтобы написать метод, который проверяет, если две произвольно набранные объекты присвоения совместимы, как:
public boolean areObjectsAssignable(Object left, Object right) {
return left.getClass().isInstance(right);
}
В общем, я бы сказал, что использование instanceof
должно быть если вы знаете, какой класс вы хотите проверить заранее. В тех редких случаях, когда вы этого не сделаете, используйте вместо этого isInstance()
.
Если вы собираетесь закрыть вопрос как дубликат, по крайней мере, цитируйте более ранние вопросы. – user949300