我刚开始学习 Java Streams,我有一个问题。让我很困惑的是以下几点:
这是diagram的前面描述的。
List<String> stringList = new ArrayList<>();
Stream<String> stringStream = stringList.stream();
stringStream.close();
当我按住 Ctrl 键盘按钮并单击鼠标左键时,它指向 BaseStream 接口(interface)中 close() 方法的抽象,但是当我按下 Ctrl+Alt+B 时,它指向我在AbstractPipeline 抽象类。问题是:
当 Stream 和 AbstractPipeline 不交互并且它们的主要连接是 BaseStream 时,Stream 调用的 close() 方法如何将我指向 AbstractPipeline 抽象类中 close() 方法的实现?
这是我不知道的某种面向对象的概念吗?
谢谢你。
更新:
我正在使用 IntelliJ IDEA 2020.1.2(终极版)和 JDK 1.8,但我也尝试过使用 JDK 14 和 Eclipse IDE for Enterprise Java Developers 版本 2019-06(4.12.0),它是相同的。
最佳答案
有一个抽象类 ReferencePipeline,它扩展了抽象类 AbstractPipeline 并实现了 Stream,但没有覆盖 close() 方法。这个抽象类是我一直在寻找的连接和答案。现在,一切都很合理,对我来说很清楚。这是完整的图表,它清楚地回答了这个问题。
感谢所有参与并帮助我找到答案的人。
干杯!
关于java - 从 Stream 调用的 close() 方法如何指向 AbstractPipeline 抽象类中 close() 方法的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62699892/