当前位置: 首页 > 知识库问答 >
问题:

Java泛型,绑定不匹配:类型不是绑定参数的有效替代

习洲
2023-03-14
public class Worker<T extends BaseDto> {

   private T t;

     ArrayList<T> getList() {
      ....
     }  
}
public class MyDTO extends  BaseDto implements Serializable {
...
}
Worker<MyDTO> q = new Worker<MyDTO>();

共有1个答案

关胜
2023-03-14
Worker<MyDTO> q = new Worker<MyDTO>(); // this is fine

你提供的代码应该可以工作,我在这里试过了,它可以正常编译。

但是,这一行不会用Java编译:

Worker<BaseDto> dto = q; // this is not

因为Java中的泛型类型是不变的,这意味着list list 这两种类型是不兼容的,即使X或Y是彼此的子类型。在支持协方差的语言中,这一行将编译为MyDTO是basedto的子类型。

 类似资料: