我现在很想问这个问题,但是我无法弄清楚到底是怎么回事

import java.util.List;
public class ListResponse<T> {

    private List<T> items;
    private Paging paging;

    public <T> ListResponse(List<T> items, Paging paging) {
        this.items = **items**;
        this.paging = paging;
    }

}


我在标记的items参数上遇到编译器错误。错误是:

Type mismatch: cannot convert from java.util.List<T> to java.util.List<T>


你知道发生了什么吗?谢谢!

最佳答案

定义为构造函数范围的<T>隐藏了类范围的<T>,编译器将它们视为不同的类型。这就是为什么会出现编译时错误的原因。

只要摆脱构造函数的type参数:

public ListResponse(List<T> items, Paging paging) {
    this.items = items;
    this.paging = paging;
}

09-26 21:09