对象不是它自己的类的“ instanceof”

应该

我试图寻找一些弹簧,而不用花费factoryBean。我已插入调试器,并证明失败是在此AbstraceBeanFactory行中:

if(!(beanInstance instanceof FactoryBean) || BeanFactoryUtils.isFactoryDereference(name)) {
   return beanInstance;
}

具体来说,“ beanInstance instanceof FactoryBean”部分在应为true时将返回false,这导致我返回了factorybean而不是工厂假定要构造的bean。

我的调试器清楚地告诉我beanInstance是org.springframework.beans.factory.config.PropertiesFactoryBean。当我告诉eclipse扩展bean的类时,我看到它清楚地实现了FactoryBean

为了进一步测试,我去了表达式。假设表达式:

beanInstance instanceof org.springframework.beans.factory.config.PropertiesFactoryBean

返回false。但是beanInstance.getClass()返回

(org.springframework.beans.factory.config.PropertiesFactoryBean) (id=112)

看来我的VM对此类很困惑。我正在尝试找出导致这种混乱的原因,以及如何解决它?

最可能的情况似乎是跨多个类加载器的混乱,但是我还没有发现任何明显的例子。我的类路径中应该只有PropertiesFactoryBean的一种实现。

是什么导致instanceof以这种方式失败?如何找到根本原因?

顺便说一句,如果相关的话,这最终是我正在调试的tomcat实例。另外,beanInstanceObject的instanceof,因此intanceof有时确实可以正常工作。

ps。我必须手动输入,而不是复制/粘贴。请假设任何明显的命名错误都是我的错别字。

编辑:修复注释中提到的括号错误。我想我会做到的。这段代码来自我未经修改的Spring,因此可以安全地假设代码本身写得很好并且可以正常工作,即使我确实打错了

一世

如果您有多个Web应用程序(或在使用Tomcat的热部署功能的情况下,同一个Web应用程序有多个版本),则每个Web应用程序将拥有自己的类加载器,以及另一个用于加载Tomcatlib文件夹中所有内容的类加载器(该加载器是Tomcat的父级)其他类加载器)。

因此,如果您要检查的界面在您的战争内部(或战争所部署的库中),并且您已部署了多个Web应用程序(可能其中一些已取消部署,但对对象的引用仍然存在),则假定它是一个类加载器问题(尤其是您已经确认getClass()在实例上Class.forName返回了不同的对象。请同时调用getClassLoader这两个类对象(Tomcat的类加载器具有好的toString方法)),并且您可能知道它们来自哪个类加载器/ webapp。

可能的短期解决方法是将包含接口的jar移到的外面,war并将其放入tomcat的lib文件夹中。

长期修复是为了找出根本原因并进行修复,当然:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是克隆对象的instanceof?

来自分类Dev

iframe + instanceof对象失败

来自分类Dev

为什么Array instanceof对象?

来自分类Dev

使用for ... in和instanceof解析对象

来自分类Dev

使用for ... in和instanceof解析对象

来自分类Dev

Scala:在编译时验证类参数不是instanceOf trait

来自分类Dev

socket io 发出生成“instanceof”的右侧不是对象

来自分类Dev

打字稿:instanceof检查不是聪明的演员

来自分类Dev

为什么JavaScript原语不是Object的instanceof?

来自分类Dev

Java抽象使用instanceof从List收集类

来自分类Dev

Java抽象使用instanceof从List收集类

来自分类Dev

Instanceof - 使用类来模拟系统访问

来自分类Dev

构造函数返回对象的instanceof false

来自分类Dev

对象构造:测试这是否是instanceOf Object

来自分类Dev

`instanceof`检查什么以确定对象类型?

来自分类Dev

对象构造:测试这是否是instanceOf Object

来自分类Dev

instanceof与typeof方法返回的对象类型矛盾

来自分类Dev

如何检查“?” Class<?> 对象的 instanceof SomeInterface

来自分类Dev

为什么this.getClass给它自己的类名,而不是匿名类的名字吗?

来自分类常见问题

是否可以在Javascript中使“类扩展A {} instanceof A”为真的类A?

来自分类Dev

对象instanceOf运算符的对象的constructor属性是否属实

来自分类Dev

我的复选框似乎不是CheckBox的instanceof

来自分类Dev

为什么数字不是typeof和instanceof的Number实例?

来自分类Dev

在 Typescript 中使用 If-instanceof-statements 是不是很糟糕?

来自分类常见问题

接口和类的'instanceof'运算符的行为不同

来自分类Dev

错误“非法通用类型的instanceof”使用本地类时

来自分类Dev

如何检查派生类的类型?(C ++ Instanceof)

来自分类Dev

将instanceof与类Object一起使用

来自分类Dev

Java的instanceof可以区分功能相同的类吗?

Related 相关文章

  1. 1

    什么是克隆对象的instanceof?

  2. 2

    iframe + instanceof对象失败

  3. 3

    为什么Array instanceof对象?

  4. 4

    使用for ... in和instanceof解析对象

  5. 5

    使用for ... in和instanceof解析对象

  6. 6

    Scala:在编译时验证类参数不是instanceOf trait

  7. 7

    socket io 发出生成“instanceof”的右侧不是对象

  8. 8

    打字稿:instanceof检查不是聪明的演员

  9. 9

    为什么JavaScript原语不是Object的instanceof?

  10. 10

    Java抽象使用instanceof从List收集类

  11. 11

    Java抽象使用instanceof从List收集类

  12. 12

    Instanceof - 使用类来模拟系统访问

  13. 13

    构造函数返回对象的instanceof false

  14. 14

    对象构造:测试这是否是instanceOf Object

  15. 15

    `instanceof`检查什么以确定对象类型?

  16. 16

    对象构造:测试这是否是instanceOf Object

  17. 17

    instanceof与typeof方法返回的对象类型矛盾

  18. 18

    如何检查“?” Class<?> 对象的 instanceof SomeInterface

  19. 19

    为什么this.getClass给它自己的类名,而不是匿名类的名字吗?

  20. 20

    是否可以在Javascript中使“类扩展A {} instanceof A”为真的类A?

  21. 21

    对象instanceOf运算符的对象的constructor属性是否属实

  22. 22

    我的复选框似乎不是CheckBox的instanceof

  23. 23

    为什么数字不是typeof和instanceof的Number实例?

  24. 24

    在 Typescript 中使用 If-instanceof-statements 是不是很糟糕?

  25. 25

    接口和类的'instanceof'运算符的行为不同

  26. 26

    错误“非法通用类型的instanceof”使用本地类时

  27. 27

    如何检查派生类的类型?(C ++ Instanceof)

  28. 28

    将instanceof与类Object一起使用

  29. 29

    Java的instanceof可以区分功能相同的类吗?

热门标签

归档