Kru*_*hna 2 java generics collections
我想结合两个通用列表并希望生成新列表,我以简单的格式提供我的代码.
public class Example{
public static <E> List<E> union(List<? extends E> a,List<? extends E> b){
List<Object> es= new ArrayList<Object>();
for( E e:a){
es.add(e);
}
for( E e:b){
es.add(e);
}
return (List<E>) es;
}
public static void main(String[] args) {
List<Long> a=new ArrayList<Long>();
a.add(1L);
List<Integer> b=new ArrayList<Integer>();
b.add(2);
List<Number> list3=union(a, b);//Compilation Error due to mismatch of return type
List<String> a1=new ArrayList<String>();
a1.add("H");
List<String> a2=new ArrayList<String>();
a1.add("=E");
List<String> a3=union(a1, a2);//no compilation error
}
}
Run Code Online (Sandbox Code Playgroud)
我的要求是我应该能够组合两个整数和长列表来生成数字列表,我也应该能够组合其他类型.这里的问题是关于我尝试组合整数和长列表时的返回类型.我需要做些什么改变才能使我的代码工作.
你为什么不用addAll?
public static <E> List<E> union(List<? extends E> a,List<? extends E> b){
List<E> es= new ArrayList<E>();
es.addAll(a);
es.addAll(b);
return es;
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它
List<? extends Number> list = union(a, b);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2420 次 |
| 最近记录: |