为什么新Spliterators
类出现在Java 8中?从Java 8开始,我们可以向static
接口添加方法.由于Spliterators
类只有静态方法,所以在其中声明其所有方法都不会更简单Spliterator
interface
?
关于Collectors/Collector
对的同样问题.
谢谢.
这个决定完全有可能在没有考虑这种全新的可能性的情况下做出,而只是遵循既定的二十年模式.
除此之外,可以讨论static
在接口中添加25到30 种方法是否真的有用.为规范实现提供一些工厂是有意义的,但你应该在某处画一条线.将工厂添加到接口的所有实现是不可行的,因为它们是由同一个库提供的.但这场辩论将是偏离主题的.
此外,Spliterators
不仅提供static
方法,还提供嵌套类.与static
方法不同,当在一个实现类中定义时,这些类会污染每个实现类的名称空间interface
.
Collectors
并且Spliterators
还可以包含特定于实现的非public
方法甚至字段.