【发布时间】:2019-06-21 02:48:33
【问题描述】:
所以我有一个对象列表,我希望处理部分或全部对象,并且我想记录那些已处理的对象。
考虑一个虚构的例子:
List<ClassInSchool> classes;
classes
.stream()
.filter(verifyClassInSixthGrade())
.filter(classHasNoClassRoom())
.peek(classInSchool -> log.debug("Processing classroom {} in sixth grade without classroom.", classInSchool)
.forEach(findMatchingClassRoomIfAvailable());
在这种情况下使用 .peek() 是否会被视为对 API 的意外使用?
为了进一步解释,this question 中的关键要点是:“不要以非预期的方式使用 API,即使它实现了您的近期目标。”我的问题是是否每次使用 peek,从调试您的流直到您验证整个链按设计工作并再次删除 .peek(),都是意外使用。因此,如果将其用作记录流实际处理的每个对象的一种方式,则被视为非预期用途。
【问题讨论】:
-
不,根据 API 文档,选择的答案不清楚什么是无意使用 API,这是我的确切问题。在这种情况下,日志记录是否考虑调试,或者在构建实际流链时,peek 的使用实际上仅限于临时代码。
标签: java java-8 java-stream