【问题标题】:Java | Adding items to List<?>爪哇 |将项目添加到列表<?>
【发布时间】:2025-06-24 14:40:01
【问题描述】:

我用谷歌搜索了一下,我真的不明白该怎么做。我正在尝试将项目添加到这样的列表中:List&lt;?&gt;。我的代码如下所示:

public class Test {
    private List<?> list;

    public Test(List<?> useThisList) {
        this.list = useThisList;
    }

    public void add(Object add) {
        this.list.add(add); // this won't compile
    }
}

但是,正如评论的那样,该代码不会编译。我尝试将其更改为:

public void add(? add) {
    this.list.add(add);
}

但由于更明显的原因,这不会编译。 有谁知道我需要更改它以使其正常运行?提前致谢!

顺便说一句,当它起作用时,你应该能够做到这一点:

List<String> list = new ArrayList<String>();
new Test(list).add("hello");

【问题讨论】:

  • 如果您不知道您拥有的列表类型,您怎么知道可以将add 添加到其中?也许你的Test 类应该是通用的......
  • 我建议您阅读 Joshua Blochs 撰写的 Effective java 2nd edition 并参考有关泛型的项目。它提供了一些关于如何充分利用泛型/通配符的见解

标签: java list generics add


【解决方案1】:

使您的 Test 类通用

public class Test<E> {
    private List<E> list;

    public Test(List<E> useThisList) {
        this.list = useThisList;
    }

    public void add(E add) {
        this.list.add(add); // this will compile
    }
}

像这样实例化你的测试类

Test<String> t = new Test<String>(new ArrayList<String>());
t.add("Something");

【讨论】: