无法在java中将类型T的对象添加到List
发布时间:2020-12-15 04:49:23 所属栏目:Java 来源:网络整理
导读:我一直在学习 Java中的泛型.虽然我理解有关类型推断,参数化类和方法的概念,但在实验时我遇到了一个奇怪的场景. 我已经实现了一个Box类,可用于保存类型为T的项.我使用List作为此抽象的内部数据结构.以下是我的代码: public class BoxT { private ListT items
我一直在学习
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>上是不一样的项目; 您当前的代码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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |