Joh*_* S. 3 java generics list add
我用Google搜索,我真的不明白该怎么做.我正在尝试将项目添加到这样的列表:List<?>.我的代码看起来像这样:
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
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如评论所述,该代码将无法编译.我试图将其更改为:
public void add(? add) {
this.list.add(add);
}
Run Code Online (Sandbox Code Playgroud)
但是由于更明显的原因,这不会编译.有谁知道我需要改变它以使其正常运作?提前致谢!
顺便说一句,当它工作时,你应该能够这样做:
List<String> list = new ArrayList<String>();
new Test(list).add("hello");
Run Code Online (Sandbox Code Playgroud)
让你的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
}
}
Run Code Online (Sandbox Code Playgroud)
像这样实例化您的测试类
Test<String> t = new Test<String>(new ArrayList<String>());
t.add("Something");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |