java类型不匹配问题_Java:通配符类型不匹配导致编译错误

我在项目中创建了一个工厂类,从理论上讲,该类允许我为任何(受支持的)给定类型创建管理器。与管理器进行交互使我可以更改给定类型的某些属性。我面临的问题是,当我尝试为泛型类型创建管理器时,编译器粉碎了我的希望和梦想。

以下代码是我正在使用的简化版本。我尝试创建“

test3Manager”的行将不会编译,并且我试图了解为什么会这样。它下面的线显示了一种“解决方法”,我正试图避免这种情况。

import java.util.List;

public class GenTest {

public static void main(String[] args) {

String test1 = "";

IRandomType test2 = null;

IAnotherRandomType> test3 = null;

IManager test1Manager = Factory.createManager(test1);

IManager> test2Manager = Factory.createManager(test2);

IManager> test3Manager = Factory.createManager(test3); // Doesn't compile. Why?

// Work around?

IManager> test3ManagerTmp = Factory.createManager(test3);

IManager> test3Manager2 = (IManager>) test3ManagerTmp;

}

public interface IRandomType {}

public interface IAnotherRandomType {}

public interface IManager {}

public static class Factory {

public static IManager createManager(T object) {

return null;

}

}

}

确切的编译错误消息是:

Type mismatch: cannot convert from GenTest.IManager> to GenTest.IManager>

之前已经问过类似的问题(见下文);但是,我不知道这个问题是否被认为是它们的重复。我仅说明这一点,因为我无法从这些问题中得出答案。我希望有人可以澄清我对泛型的使用做错了什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值