我正在开发一个基于Spring Batch,Spring Boot,slf4j和Java 8的简单应用程序.我想尽可能多地使用lambda用于学习目的. “myPojos.stream()forEach((myPojo) – > {log.info(myPojo);});”是什么问题下面?该消息抱怨“……不适用于参数
public class CustomItemWriter implements ItemWriter {
private static final Logger log = LoggerFactory.getLogger(CustomItemWriter.class);
@Override
public void write(List extends MyPojo> myPojos) throws Exception{
myPojos.stream().forEach((myPojo)-> {log.info(myPojo);});//error
myPojos.forEach(System.out::println);//it works
myPojos.stream().forEach((myPojo) -> {System.out.println(myPojo);}); //it works
log.info("finish"); //it works
}
}
解决方法:
Logger.info接收一个String,因此您必须将MyPojo转换为带有toString()的字符串:
myPojos.stream().forEach((myPojo) -> {log.info(myPojo.toString());});
请注意,由于您有一个语句lambda,因此您可能会失去一些健壮性:
myPojos.stream().forEach(myPojo -> log.info(myPojo.toString()));
标签:java,java-8,lambda,log4j,slf4j
来源: https://codeday.me/bug/20190727/1556542.html