以下代码:
names = Arrays.asList("A","B","C").stream();
List<String> namesAsList = names.collect(() -> new ArrayList<String>(),List::add,List::add);
System.out.println("Individual Strings put into a list: " + namesAsList);
Run Code Online (Sandbox Code Playgroud)
编译期间生成以下错误:
列表namesAsList = names.collect(() - > new ArrayList(),List :: add,List :: add); ^(参数不匹配;无效方法引用不兼容类型:ArrayList不能转换为int)其中R,T是类型变量:R extends方法中声明的对象collect(Supplier,BiConsumer,BiConsumer)T扩展在接口Stream 1中声明的Object错误
当我修改代码以删除泛型时,代码将使用未经检查的表达式警告进行编译:
Stream<String> names = Arrays.asList("A","B","C").stream();
List<String> namesAsList = names.collect(() -> new ArrayList(),List::add,List::add);
System.out.println("Individual Strings put into a list: " + namesAsList);
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?我不认为这个问题与int有关.
如果答案可能包括解决问题的方法,我将不胜感激,所以我可以自己学习如何解决这些问题.