gpt4 book ai didi

java - 无法将 T 类型的对象添加到 Java 中的 List

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:31 26 4
gpt4 key购买 nike

我一直在学习 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.add(t) 遇到编译时错误,说 List 中的 add(T) 不能应用于 (T)。我无法找出此错误的原因。另外,我不明白为什么我不能将 T 类型的项目添加到由 T 参数化的列表中。

最佳答案

您对泛型类型变量进行了局部重新声明 <T>在你的方法上addItemToBox遮住了类里面的那个Box<T> .

<T>你的方法在List<T> items;上不一样

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

public class Box<T> {

private List<T> items;

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

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

如果你这样看,你的代码编译失败的原因应该很清楚。

解决方案:删除 <T>在方法声明前

public void addItemToBox(T t)

关于java - 无法将 T 类型的对象添加到 Java 中的 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47320333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com