Хотите ли вы соответствовать классу точно , например, соответствовать только FileInputStream
вместо любого подкласса FileInputStream
?Если это так, используйте getClass()
и ==
.Обычно я делаю это в equals
, так что экземпляр X не считается равным экземпляру подкласса X - в противном случае вы можете столкнуться с хитрыми проблемами симметрии.С другой стороны, это более полезно для сравнения того, что два объекта относятся к классу того же , чем к одному конкретному классу.
В противном случае используйте instanceof
.Обратите внимание, что с getClass()
вам нужно будет убедиться, что у вас есть ненулевая ссылка для начала, или вы получите NullPointerException
, тогда как instanceof
просто вернет false
, если первый операнд будет нулевым.
Лично я бы сказал, что instanceof
более идиоматичен, но использование или из них в большинстве случаев является запахом дизайна.