类扩展了另一个类,java中的实现接口可以转换为这些类型中的任何一种吗?

时间:2012-04-23 09:37:32

标签: java spring types interface javabeans

我有像春豆一样:

 <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;
 ...

但是当我跑步时,我收到异常:

  

无法将Resolver类型的值转换为所需类型IManagementInterface。

但这似乎不正确 - 因为Resolver也是IManagementInterface类型。什么感觉这个错误?或者可能是我应该清理安装我的所有项目?

1 个答案:

答案 0 :(得分:2)

首先进行全新安装。如果这不会使问题消失,您可能会遇到类加载器问题。如果您的Resolver实例(以及相应的类声明)由不同于TestBean的类加载器加载,则它属于不同的类加载器领域,并且它(或者特别是其超级接口IManagementInterface)因此,JVM将其视为与IManagementInterface参数类型TestBean.setResolver完全不同的类型。所以一个人不能被投射到另一个人身上。

请参阅this earlier answer of mine以了解验证这是否是根本原因的方法。