共计 337 个字符,预计需要花费 1 分钟才能阅读完成。
描述
最近在公司开发一个新的需求:同事写好了一个工具类并且通过@Component 的方式交给 Spring 容器进行管理,然后我在代码中按名字从 Spring 容器中获取这个对象。在获取的时候出现了以下的错误:
com.utils.A cannot not be cast to com.utils.A
问题解决思路
百度搜索之后发现全限定名相同的类进行转换出现错误可能是 类加载器不相同 而导致的。
接下来我使用 Class.getClassLoader()验证是否类加载器不一致。
需要提醒的是:放在 Spring 中对象此时不能再通过按类型取出,因为本身类型已经不一致了,此时可以通过按名字获取。
getClassLoader() == null 时,是指类加载器为 BootStrap ClassLoader
正文完