Ключ в том, чтобы не рассматривать instanceof как часть обычной "нормальной практики".Как и самоанализ в целом, instanceof - это специальный инструмент для использования в особых, нетипичных обстоятельствах.Всякий раз, когда вы используете 'instanceof', вы также можете обнаружить, что используете другие 'специальные' части платформы, такие как рефлексия, в более общем смысле.
До тех пор, пока вы обнаружите, что используете его, вы принимаете, что выделать это - клочок при отсутствии более элегантной / практичной альтернативы, тогда это нормально.
Тем не менее, наиболее типичными обстоятельствами в повседневных программах, вероятно, являются:
- реализация равна ()
- чтение сериализованных объектов
- несколько других случаев, когда вам предоставляется массив / коллекция элементов, например, перечисление JComponents в кадре / контейнере, а затем выполнение действий в зависимости от типа.
Эмпирическое правило, которое вы можете попробовать придерживаться, заключается в том, чтобы не требовать от пользователей библиотеки использования instanceof, а, скорее, иметь какие-либо случаи экземпляра instanceof внутри библиотеки.
Или, другими словами, вы должны переформулировать свой вопрос: «В каких случаях« intsanceof »является обходным путем для ?»