![]() |
1
10
我可以想象一些情况,例如,您有一些库中的对象,这些对象不能扩展(或者这样做不方便),可能与您的一些对象混合在一起,所有对象都具有相同的基类,在一个集合中。
在一些旧代码的维护中,您不能在许多旧类中注入一些新的行为,只是为了添加一个新的小特性或一些错误修复… |
![]() |
2
20
它在
关于instanceof有一个很好的了解就是它的lhs可以
|
![]() |
3
12
我认为当你绝对需要知道一个物体的类型时,
一个糟糕的做法是
|
![]() |
4
5
当你进入纯OO模型时,那么
但是,如果您没有使用100%OO模型,或者您需要从外部向其中注入东西,那么instanceof或等价物(
一般的“规则”是尽可能避免,尤其是在 你 控制类型层次结构,例如可以使用子类型多态性。其目的不是询问对象是什么类型,并对其进行处理,而是直接或间接地通过访问者(本质上是双重多态性)询问对象以执行某些操作。 |
![]() |
5
2
我同意它有臭味。很多例子,特别是在一个被锁在一起的街区,闻起来很糟糕。 有时它会表现得像你想象不到的那样…我曾经发生过一件事:
(在我的例子中,这是由于休眠生成代理对象导致的…。但是,如果代码dpending在instanceof上是有风险的) |
![]() |
6
1
它可以在强制转换之前用作健全性检查;除了检查对象的类型是否正确之外,它还检查对象是否为空。
|
![]() |
7
0
在创造工厂的情况下如何? 例如
|