Java 泛型的私有实例化

Java 泛型的私有实例化,java,generics,Java,Generics,我对Java有点陌生,但我真的很困惑为什么这两个“等效”语句会抛出不同的错误: public class SampleArray<T> implements Grid<T> { public int x; public int y; private List<List<T>> grid = new ArrayList<List<T>>(); public SampleArray(int x,

我对Java有点陌生,但我真的很困惑为什么这两个“等效”语句会抛出不同的错误:

public class SampleArray<T> implements Grid<T> {
    public int x;
    public int y;
    private List<List<T>> grid = new ArrayList<List<T>>();

    public SampleArray(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

在该.grid的
T>>角括号旁边。为什么我会犯这个错误?它们不是等价的吗?只是在不同的地方实例化了一个?接口网格只是一个通用接口

您再次在构造函数中定义网格。试试这个

public SampleArray(int x, int y) {
    this.x = x;
    this.y = y;
    this.grid = new ArrayList<List<T>>();
}
public SampleArray(int x,int y){
这个.x=x;
这个。y=y;
this.grid=new ArrayList();
}
相反。它会将类中的网格声明为私有字段。初始化在构造函数中完成

线路

private List<List<T>> grid = new ArrayList<List<T>>();
private List grid=new ArrayList();

一次定义并初始化网格。

第二段代码语法错误。初始化此.grid时不应重新指定数据类型
;编译器会认为您正在声明一个局部变量,
this
不能用于创建局部变量

this.grid = new ArrayList<List<T>>();
删除变量上的数据类型

this.grid = new ArrayList<List<T>>();
this.grid=new ArrayList();

这与泛型无关。执行
int this.x=x也是无效的Java。为什么你认为在初始化这个网格时需要重复字段的类型?哇。。。我觉得很。。。哑的谢谢!
this.grid = new ArrayList<List<T>>();