Java 创建泛型列表时遇到问题
这一行给出了编译器错误,说明无法从Java 创建泛型列表时遇到问题,java,list,generics,Java,List,Generics,这一行给出了编译器错误,说明无法从列表>转换 当我试图修改下一行中引用的类型时,出现了语法错误。 如何将上面的3个列表(ints、double和longs)放入另一个列表中 编辑:相关问题: 声明列表的元素的列表扩展了数量和实现可比较的的正确语法是什么 List<List<?>> lists = Arrays.asList(ints, doubles , longs); List>List=Arrays.asList(整数、双精度、长精度); 您可以使用此表单以实
列表>
转换
当我试图修改下一行中引用的类型时,出现了语法错误。
如何将上面的3个列表(ints
、double
和longs
)放入另一个列表中
编辑:相关问题:
声明列表
的元素的列表
扩展了数量
和实现可比较的的正确语法是什么
List<List<?>> lists = Arrays.asList(ints, doubles , longs);
List>List=Arrays.asList(整数、双精度、长精度);
您可以使用此表单以实现更多类型安全:
List<? extends List<?>> lists = Arrays.asList(ints, doubles , longs);
List我不建议在一个列表中混合不同的类型。
如果您确实想这样做,我认为您可以尝试摆脱内部列表中的泛型类型来保存任何对象
List<? extends List<? extends Number>> lists = Arrays.<List<? extends Number>>asList(ints, doubles , longs);
List List=Arrays.asList(整数、双精度、长精度);
您可以尝试以下方法:
List<List> lists = Arrays.asList(ints, doubles , longs);
List如果您的第二个compós列表被扩展了类编号的ObjExt使用,您可以尝试:
List<List<? extends Number>> lists = new ArrayList<List<? extends Number>>();
lists.add(ints);
lists.add(doubles);
lists.add(longs);
List怎么样:
List<? extends List<? extends Number>> lists = Arrays.asList(ints, doubles , longs);
list这不会阻止将列表添加到顶部列表中。我只想要Number
s的列表,这些列表可以compariable
@Bhaskar-我只是告诉你如何摆脱编译器警告。是否是您特别想要的边界是另一个问题。您是对的-也许我的问题说得不够清楚,但我还是想要边界。我添加了一个具有更紧密边界的类型安全变体。我同意混合不同列表类型看起来不神圣。除非您进行双重转换,否则这不会起作用:(list)(list)Arrays.asList(…)
。我希望我必须抑制“未检查”警告,但它不在我的机器上。但是,我相信我的Netbeans有一些问题,可能应该添加@SuppressWarnings(“unchecked”)
。Arrays.asList不会返回java.util.ArrayList。@jtahlborn-看看答案是什么,你已经证明了我的观点。往下看两行。它不是java.util.ArrayList,而是java.util.Arrays.ArrayList(一个内部impl)。@jtahlborn-Hah!你难住我了。我没有注意到那个内在的阶级。我已经更新了我的答案。
List<List<? extends Number>> lists = new ArrayList<List<? extends Number>>();
lists.add(ints);
lists.add(doubles);
lists.add(longs);
List<? extends List<? extends Number>> lists = Arrays.asList(ints, doubles , longs);
List<? extends Number> ints = (List<Integer>)Arrays.asList(1,2,3,4,5);
List<? extends Number> doubles = (List<Double>)Arrays.asList(226.6131 , 7789879.3 );
List<? extends Number> longs = (List<Long>)Arrays.asList( 687643643687L , 743926945627L );
List<List<? extends Number>> lists = Arrays.asList( ints, doubles, longs );