我有像 Spring Bean 这样的:
<bean id="testBean" class="TestBean"
......
<property name="resolver" ref="resolver"....
<小时/>
class Resolver extends BaseResolver implements IManagementInterface
在 TestBean 类 setter 中:
public void setResolver (IManagementInterface resolver) {
this.resolver=resolver;
...
但是当我运行时我收到异常:
Cannot convert value of type Resolver to required type IManagementInterface.
但这似乎不正确 - 因为 Resolver
也是类型 IManagementInterface
。这个错误有什么意义?或者我应该全新安装我的所有项目?
最佳答案
首先进行全新安装。如果这不能使问题消失,则您可能遇到了类加载器问题。如果您的 Resolver
实例(以及相应的类声明)是由与 TestBean
不同的类加载器加载的,则它属于不同的类加载器领域,并且它(或者特别是其 super 接口(interface))因此,IManagementInterface
) 被 JVM 视为与 TestBean.setResolver
的 IManagementInterface
参数类型完全不同的类型。所以一个不能被转换到另一个。
参见this earlier answer of mine寻找一种方法来验证这是否是根本原因。
关于java - 类扩展另一个类并实现 java 中的接口(interface)可以转换为这些类型中的任何一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278060/