当前位置:  开发笔记 > 编程语言 > 正文

instanceof会产生检测接口的不一致结果吗?

如何解决《instanceof会产生检测接口的不一致结果吗?》经验,为你挑选了4个好方法。

有什么棘手的我应该知道的instanceof吗?我通过几种方法传递一个对象列表,并测试这些对象是否使用了特定的接口instanceof.在某些情况下,instanceof正确地将对象标识为实现接口,而在其他情况下则不然.它似乎在不同的地方给我不一致的结果.我应该知道这里有什么诀窍/问题吗?

期待您的评论:

1)我知道instanceof形式不好.我正在处理一个不能完美的对象层次结构,这是我能想到的最不好的事情.

2)我正在努力创建一个代码示例,但如果我要在这里粘贴任何有用的东西,我将需要大量简化我的代码.与此同时,如果你以前看过这个并且可以解决这个问题,请做.



1> Jon Skeet..:

您是否动态地从不同的类加载器加载任何类型?唯一一次我看到明显不一致的结果是当我有两行代码,看起来他们引用相同的类型,但实际上从不同的类加载器加载了该类型.



2> Tom Hawtin -..:

instanceof总是返回falsenull.如果左侧的静态类型不可能是指定类型的实例,则不会编译.除此之外,它应该毫无意外地工作.

与C++(我相信Smalltalk)不同,对象不能在运行时更改类型.在C++中,类型在构造期间发生更改,因此无法从构造函数到派生类[subclass]方法调用方法.



3> morgancodes..:

好的,问题解决了.像往常一样,这个问题比我想象的要少.我正在处理的项目处于一个不幸的状态,即有一些重复的类名.我正在使用foo.MyInterface创建类,并测试bar.MyInterface的实例.谢谢你的回复.它确实帮助我思考它.


具有讽刺意味的是,我在答案中几乎包含了这种可能性,但由于某种原因最终没有.这将教会我 - 下次我会发布所有的想法,无论多么愚蠢:)

4> cadrian..:

我所知道的唯一问题nullinstanceof没有类型.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有