java - 类扩展另一个类并实现 java 中的接口(interface)可以转换为这些类型中的任何一个吗?

标签 java spring types interface javabeans

我有像 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.setResolverIManagementInterface 参数类型完全不同的类型。所以一个不能被转换到另一个。

参见this earlier answer of mine寻找一种方法来验证这是否是根本原因。

关于java - 类扩展另一个类并实现 java 中的接口(interface)可以转换为这些类型中的任何一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278060/

相关文章:

java - 如何根据这个结构创建jsonObject?

java - spring mvc 中包含多部分数据的 POST 请求

java - 数学运算符

Spring Boot Actutor Web 指标 - 禁用(或分组)http_server_requests_seconds_sum

spring - 如何将资源限制为当前用户拥有的资源

haskell - 在 Haskell 中实现非位置关键字参数

javascript - javascript 如何从字符串获取数据类型

java - 将 Struts Tiles 属性插入 JavaScript 函数

java - c3p0 和 hibernate 用户/密码覆盖

Haskell 多态类型函数