全限定名完全相同的两个类转换出现类型转换错误分析

描述

 最近在公司开发一个新的需求:同事写好了一个工具类并且通过@Component的方式交给Spring容器进行管理,然后我在代码中按名字从Spring容器中获取这个对象。在获取的时候出现了以下的错误:

com.utils.A cannot not be cast to com.utils.A

问题解决思路

 百度搜索之后发现全限定名相同的类进行转换出现错误可能是类加载器不相同而导致的。
 
 接下来我使用Class.getClassLoader()验证是否类加载器不一致。
  需要提醒的是:放在Spring中对象此时不能再通过按类型取出,因为本身类型已经不一致了,此时可以通过按名字获取。

getClassLoader() == null时,是指类加载器为BootStrap ClassLoader

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理