怎么做" Stream"在java8工作?

时间:2017-08-25 09:07:48

标签: java functional-programming java-8 java-stream lambda-calculus

我要问原因或原则。

我发现界面的大多数方法" Stream"在Java8中未声明为"默认",因此它们没有方法体。例如:

boolean anyMatch(谓词谓词);

boolean allMatch(谓词谓词);

流图(功能映射器);

正如您在源文件Stream.java中看到的那样。

但是这些没有实体的方法似乎可以在java程序中执行。

你知道为什么吗?

谢谢。

1 个答案:

答案 0 :(得分:5)

abstract class ReferencePipeline<P_IN, P_OUT>
    extends AbstractPipeline<P_IN, P_OUT, Stream<P_OUT>>
    implements Stream<P_OUT>  ...

实现它们的是ReferencePipeline。例如:

@Override
public final boolean anyMatch(Predicate<? super P_OUT> predicate) {
    return evaluate(MatchOps.makeRef(predicate, MatchOps.MatchKind.ANY));
}