【发布时间】:2018-02-03 07:18:09
【问题描述】:
我是问原因还是原理。
我发现Java8中接口“Stream”的大部分方法都没有声明为“default”,所以它们没有方法体。例如:
boolean anyMatch(谓词谓词);
boolean allMatch(谓词谓词);
流图(函数映射器);
正如您在源文件 Stream.java 中看到的那样。
但是这些没有body的方法似乎可以在java程序中执行。
你知道为什么吗?
谢谢。
【问题讨论】:
-
因为从
stream()得到的流是Stream的具体实现,即ReferencePipeline的某个子类。您不能实例化接口。这基本上是一个关于接口如何工作的问题...... -
因为它或多或少是
interface? -
你可以看看任何
stream()方法的实现,几秒钟就可以完成。
标签: java functional-programming java-8 java-stream lambda-calculus