Java 无法将T类型的对象添加到列表<;T>;在爪哇

Java 无法将T类型的对象添加到列表<;T>;在爪哇,java,generics,Java,Generics,我一直在学习Java中的泛型。虽然我理解关于类型推断、参数化类和方法的概念,但在实验中我遇到了一个奇怪的场景 我已经实现了一个Box类,它可以用来保存T类型的项。我使用List作为这个抽象的内部数据结构。以下是我的代码: public class Box<T> { private List<T> items; public Box(){ items = new ArrayList<>(); } public

我一直在学习Java中的泛型。虽然我理解关于类型推断、参数化类和方法的概念,但在实验中我遇到了一个奇怪的场景

我已经实现了一个Box类,它可以用来保存T类型的项。我使用List作为这个抽象的内部数据结构。以下是我的代码:

public class Box<T> {

    private List<T> items;

    public Box(){
        items = new ArrayList<>();
    }

    public <T> void addItemToBox(T t){
        items.add(t);
    }
}
公共类框{
私人清单项目;
公用信箱(){
items=newarraylist();
}
公共无效addItemToBox(T){
增加(t)项;
}
}

我在项处遇到编译时错误。add(t)表示列表中的add(t)不能应用于(t)。我无法找出这个错误的原因。另外,我不明白为什么我不能将类型为t的项添加到由t参数化的列表中。

您已经在方法
addItemToBox
上对泛型类型变量
进行了局部重新声明,该方法将类
上的变量隐藏起来

方法上的
与列表项上的
不同

您当前的代码100%等同于:

public class Box<T> {

    private List<T> items;

    public Box(){
        items = new ArrayList<>();
    }

    public <T2> void addItemToBox(T2 t){
        items.add(t);
    }
}

谢谢欧文!这让我很清楚。我混淆了两个概念。
public void addItemToBox(T t)