一尘不染

是否将instanceof视为不良做法?如果是这样,在什么情况下instanceof仍然是可取的?

java

多年来,我尽力避免instanceof出现这种情况。在适用时使用多态或访客模式。我想它在某些情况下可以简化维护工作…还有其他应注意的缺点吗?

但是我确实在Java库中到处都看到它,所以我想它有它的位置吗?在什么情况下更可取?是否不可避免?


阅读 287

收藏
2020-03-24

共2个答案

一尘不染

我可以想象某些情况,例如您有一个库的对象,您无法扩展这些对象(或者这样做很不方便),也许与您的某些对象混合在一起,这些对象都具有相同的基类,并且一起采集。
我想在这种情况下,使用instanceof区分对这些对象的某些处理可能会很有用。

同上,对旧

2020-03-24
一尘不染

在的库存实现中肯定有它的位置equals。例如

public boolean equals ( Object o )
{
  if ( this == o )
  {
     return true;
  }

  if ( ! (o instanceof MyClass) )
  {
    return false;
  }

  // Compare fields
  ...
}

有关instanceof的一件整洁的事情是它的LHS可以是null,在这种情况下,表达式的计算结果为false

2020-03-24