java Lambda表达式不工作,正在终止
用lambda表达式编写java8程序,它不会被执行,而是在lambda表达式处终止,没有异常
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
public class BiConsumerTest {
public static void main(String[] args) {
try{
List<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
list1.add("V");
List<String> list2 = new ArrayList<String>();
list2.add("J");
list2.add("G");
list2.add("P");
BiConsumer<List<String> , List<String>> bc = (lista, listb) ->{
lista.stream().forEach( System.out::print);
};
}catch(Exception ex){
ex.printStackTrace();
}
}
}
预计它将打印列表中的字符串
# 1 楼答案
这是因为您没有调用
BiConsumer
的accept
方法。可以这样称呼:此外,请注意,没有必要只调用
forEach
而直接在列表中调用forEach
:另一件事是你的
BiConsumer
没有使用第二个列表,这可能是因为你还没有完成整个逻辑的实现,在这种情况下这是可以理解的完整代码:
# 2 楼答案
您目前刚刚定义了函数接口,要进一步执行它,需要在代码中调用实现。在您的情况下,为此,需要调用^{} 方法,如下所示:
然后执行你定义的操作。正如其Javadoc所述
另一方面,如果我建议的话,你可能只是想打印(至少)你正在消费的两个列表:
它将打印为输出
(根据评论)这可以进一步写成: