java – 如何使用forSach与slf4j.logger.info
发布时间:2020-12-15 04:31:36 所属栏目:Java 来源:网络整理
导读:我正在开发一个基于 Spring Batch,Spring Boot,slf4j和 Java 8的简单应用程序.我想尽可能多地使用lambda用于学习目的. “myPojos.stream()forEach((myPojo) – {log.info(myPojo);});”是什么问题下面?该消息抱怨“……不适用于参数?extends MyPojo”.请注
我正在开发一个基于
Spring Batch,Spring Boot,slf4j和
Java 8的简单应用程序.我想尽可能多地使用lambda用于学习目的. “myPojos.stream()forEach((myPojo) – > {log.info(myPojo);});”是什么问题下面?该消息抱怨“……不适用于参数<?extends MyPojo”.请注意,所有其他三个日志行都正常工作.
public class CustomItemWriter implements ItemWriter<MyPojo> { 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())); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |