加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

无法在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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读