描述

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

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

问题解决思路

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

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