Java 列表的forEach()如何接受非消费者<;T>;类似于list::add的表达式
考虑以下代码段:Java 列表的forEach()如何接受非消费者<;T>;类似于list::add的表达式,java,java-stream,Java,Java Stream,考虑以下代码段: List<String> strList = new ArrayList<>(); List<String> strList2 = new ArrayList<>(); strList.forEach(strList2::add); List strList=new ArrayList(); List strList2=newarraylist(); forEach(strList2:
List<String> strList = new ArrayList<>();
List<String> strList2 = new ArrayList<>();
strList.forEach(strList2::add);
List strList=new ArrayList();
List strList2=newarraylist();
forEach(strList2::add);
当
list.forEach()
仅接受消费者
的void accept(T)
作为list::add
具有布尔接受(T)
签名的方法时,如何实现这一点?返回类型不匹配,对吗?我不得不说,这真是令人印象深刻。像子弹一样快:)哇。。你一直在等着回答问题吗?太棒了@利诺。。。最终作为副本关闭并删除;)@尤金总是这样结束,总是;)我有一个疑问。。那么,当我们使用list.add(ta)作为返回值时,为什么会得到true/false呢?(我认为list.add()和list::add指的是同一个实现)您可以提供只接受一个参数的任何函数引用,不管它的名称是什么。侧注,这是forEach
的一个非常糟糕的用法,最好是strList.addAll(strList2)
@Lino Yes true。为了举例说明,我用了。。
.forEach(x -> {
boolean willBeIgnored = strList2.add(x);
return;
})