多年来,我尽力避免instanceof出现这种情况。在适用时使用多态或访客模式。我想它在某些情况下可以简化维护工作…还有其他应注意的缺点吗?
instanceof
但是我确实在Java库中到处都看到它,所以我想它有它的位置吗?在什么情况下更可取?是否不可避免?
我可以想象某些情况,例如您有一个库的对象,您无法扩展这些对象(或者这样做很不方便),也许与您的某些对象混合在一起,这些对象都具有相同的基类,并且一起采集。 我想在这种情况下,使用instanceof区分对这些对象的某些处理可能会很有用。
同上,对旧
在的库存实现中肯定有它的位置equals。例如
equals
public boolean equals ( Object o ) { if ( this == o ) { return true; } if ( ! (o instanceof MyClass) ) { return false; } // Compare fields ... }
有关instanceof的一件整洁的事情是它的LHS可以是null,在这种情况下,表达式的计算结果为false。
null
false