加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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()));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读