Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“怎么做?”;溪流;在java8中工作?_Java_Functional Programming_Java 8_Java Stream_Lambda Calculus - Fatal编程技术网

“怎么做?”;溪流;在java8中工作?

“怎么做?”;溪流;在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()获得的流是流的具体实现,即引用管道的某个子类。不能实例化接口。这基本上是一个关于接口如何工作的问题…因为它或多或少是一个接口?您只需看看流()方法的任

我被问到原因或原则

我发现Java8中接口“Stream”的大多数方法都没有声明为“default”,所以它们没有方法体。例如:

布尔任意匹配(谓词)

布尔allMatch(谓词)

流图(函数映射器)

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

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

你知道为什么吗


谢谢。

因为您从
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));
}