Mik*_*elF 0 java overloading java-8 java-stream
目前,要将a转换List<List<Foo>>为a Stream<Foo>,您必须使用以下内容:
Stream<Foo> stream = list.stream().flatMap(fs -> fs.stream());
//or
Stream<Foo> stream = list.stream().flatMap(Collection::stream);
Run Code Online (Sandbox Code Playgroud)
我认为这正是方法引用的设计目标,它确实提高了可读性.现在考虑一下:
Stream<Bar> stream = list.stream().flatMap(fs -> fs.getBarList().stream());
Run Code Online (Sandbox Code Playgroud)
有两个链式方法调用,没有方法参考是可能的,我已经发生了几次这种情况.虽然这不是一个大问题,但它似乎偏离了方法参考简洁性.
在使用JavaFX 8之后,我注意到它们的API常量是方便的方法.Java是一种非常冗长的语言,在我看来,简单的方法重载是JavaFX的一大卖点.
所以我的问题是,我想知道为什么没有Stream.flatMap(Collection)可以被称为的方便方法:
Stream<Bar> stream = list.stream().flatMap(Foo::getBarList);
Run Code Online (Sandbox Code Playgroud)
这是甲骨文人员故意遗漏的吗?或者这会引起任何混淆吗?
注意:我知道"不基于意见的问题政策",我不是在寻找意见,我只是想知道是否有理由不采用这种方法.
Stream它已经是一个非常大的界面,并且有阻力使其变大.list.stream().map(Foo::getBarList).flatMap(List::stream).您还可以在http://mail.openjdk.java.net/pipermail/lambda-libs-spec-observers/2013-April/001690.html上查看原始讨论; 我没有看到专门讨论的那个选项; 它可能已经被丢弃了吗?
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |