“怎么做?”;溪流;在java8中工作?
我被问到原因或原则 我发现Java8中接口“Stream”的大多数方法都没有声明为“default”,所以它们没有方法体。例如: 布尔任意匹配(谓词) 布尔allMatch(谓词) 流图(函数映射器) 正如您在源文件Stream.java中看到的那样 但是这些没有实体的方法似乎可以在java程序中执行 你知道为什么吗“怎么做?”;溪流;在java8中工作?,java,functional-programming,java-8,java-stream,lambda-calculus,Java,Functional Programming,Java 8,Java Stream,Lambda Calculus,我被问到原因或原则 我发现Java8中接口“Stream”的大多数方法都没有声明为“default”,所以它们没有方法体。例如: 布尔任意匹配(谓词) 布尔allMatch(谓词) 流图(函数映射器) 正如您在源文件Stream.java中看到的那样 但是这些没有实体的方法似乎可以在java程序中执行 你知道为什么吗 谢谢。因为您从stream()获得的流是流的具体实现,即引用管道的某个子类。不能实例化接口。这基本上是一个关于接口如何工作的问题…因为它或多或少是一个接口?您只需看看流()方法的任
谢谢。因为您从
stream()
获得的流是流
的具体实现,即引用管道
的某个子类。不能实例化接口。这基本上是一个关于接口如何工作的问题…因为它或多或少是一个接口
?您只需看看流()
方法的任何实现,都可以在几秒钟内完成。谢谢您,朋友!我在jdk源代码中找到了ReferencePipeline。但奇怪的是,在甲骨文网站的官方JavaAPI文档中找不到它。@xuange因为它不是公开的,所以在那里没有文档记录。
abstract class ReferencePipeline<P_IN, P_OUT>
extends AbstractPipeline<P_IN, P_OUT, Stream<P_OUT>>
implements Stream<P_OUT> ...
@Override
public final boolean anyMatch(Predicate<? super P_OUT> predicate) {
return evaluate(MatchOps.makeRef(predicate, MatchOps.MatchKind.ANY));
}