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>

之前已经提出了类似的问题(见下文);但是,我不知道这个问题是否与他们重复.我只是陈述这一点,因为我无法从这些问题中推断出我的答案.我希望有人可以澄清我使用仿制药时我做错了什么.

关于SO的相关问题是:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值