有什么棘手的我应该知道的instanceof
吗?我通过几种方法传递一个对象列表,并测试这些对象是否使用了特定的接口instanceof
.在某些情况下,instanceof
正确地将对象标识为实现接口,而在其他情况下则不然.它似乎在不同的地方给我不一致的结果.我应该知道这里有什么诀窍/问题吗?
期待您的评论:
1)我知道instanceof
形式不好.我正在处理一个不能完美的对象层次结构,这是我能想到的最不好的事情.
2)我正在努力创建一个代码示例,但如果我要在这里粘贴任何有用的东西,我将需要大量简化我的代码.与此同时,如果你以前看过这个并且可以解决这个问题,请做.
您是否动态地从不同的类加载器加载任何类型?唯一一次我看到明显不一致的结果是当我有两行代码,看起来他们引用相同的类型,但实际上从不同的类加载器加载了该类型.
instanceof
总是返回false
了null
.如果左侧的静态类型不可能是指定类型的实例,则不会编译.除此之外,它应该毫无意外地工作.
与C++(我相信Smalltalk)不同,对象不能在运行时更改类型.在C++中,类型在构造期间发生更改,因此无法从构造函数到派生类[subclass]方法调用方法.
好的,问题解决了.像往常一样,这个问题比我想象的要少.我正在处理的项目处于一个不幸的状态,即有一些重复的类名.我正在使用foo.MyInterface创建类,并测试bar.MyInterface的实例.谢谢你的回复.它确实帮助我思考它.
我所知道的唯一问题null
是instanceof
没有类型.