以下代码:
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);
编译期间生成以下错误:
List namesAsList=names.collect(()->new ArrayList(),List::Add,List::Add);^(参数不匹配;无效的方法引用不兼容的类型:ArrayList无法转换为int)其中R,T是类型变量:R在方法collect中声明的extends Object(Supplier,BiConsumer,BiConsumer)T在接口流1中声明的extends 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);
为combiner
传递的方法引用实际上不适合。尝试:
List<String> namesAsList = names
.collect(ArrayList::new, List::add, List::addAll);
您传递了list::add
,编译器正尽力将其解释为biconsumer
类型的组合器实例。因此,出现了奇怪的参数不匹配错误。
此外,我假设您只是为了研究目的而实施此操作。如果要将流
收集到列表
,只需使用:
.collect(Collectors.toList());
.collect(Collectors.toCollection(ArrayList::new));
我正在编写一个学习反射的示例应用程序。我试图使用反射从另一个类调用一个类中定义的主方法,但我得到了 线程“main”java中出现异常。lang.IllegalArgumentException:参数类型不匹配 在下面查找我正在尝试执行的代码。 调用main方法的类 要调用其主方法的类
我试图通过对通过其JNDI引用查找的EJB的反射来调用一个方法。它需要三个参数:EndUser对象(自定义对象)、Set(自定义类)和布尔值。第一个对象使用“无法调用方法:java.lang.IllegalArgumentException:参数类型不匹配”导致调用失败。只要第一个参数非空,就会发生这种情况。将其设置为空会使错误消失。 实际通话: EjbUtils方法: 我尝试调用的方法: 奇怪的
我不断得到这样的错误: 错误:找不到适合计划的方法(足球,int) 方法Timer.Schedule(TimerTask,long)不适用 (参数不匹配;soccer无法转换为TimerTask) 方法timer.schedule(TimerTask,Date)不适用 (参数不匹配;soccer无法转换为TimerTask) 对不起可怜的岗位,第一次做这件事。
问题内容: 我正在使用/ 来获取HTTP响应中的响应代码。返回1,但是尝试获取异常!知道为什么吗? 这是代码: 这是输出: 问题答案: 总是会创建一个新的匹配器,因此您需要再次致电。 尝试:
AspectJ1.6版本