JasonMing 2019-08-21 10:29 这是因为java stream的lambda没有local-return功能,循环里面无法break,最多某些operator在返回null时候可以break掉当前迭代,这是个语言设计的问题。用kotlin就完全不会发生这回事,因为kotlin的inline function可以local return。 fun doSomething(foos: List<Foo>) { foos.asSequence() .filter { it.value > 10 } .map { it.value } .reduce { acc, x -> (acc + x) .takeUnless { it > 100 } ?: return println("Found a sum over 100") }}