Nat*_*han 4 java java-stream spliterator
我想将以下for语句转换为Java 8流(即Stream<Class<?>>).理想的解决方案将是很简单的,我可以很容易地适应它的各种遍历一个链表的情况(例如File.getParentFile(),Component.getParent()).
Class<?> clazz;
Object value;
value = ...;
for (clazz = value.getClass(); clazz != null; clazz = clazz.getSuperclass())
...
Run Code Online (Sandbox Code Playgroud)
我意识到创建流的几行代码不会比单个for语句简单.但是,流使for循环体更简单,因此需要流.
您需要一种takeWhile仅出现在JDK-9中的方法.目前,您可以使用可用的后端口,例如,在我的StreamEx库中:
Stream<Class<?>> stream = StreamEx.iterate(value.getClass(), Class::getSuperClass)
.takeWhile(Objects::nonNull);
Run Code Online (Sandbox Code Playgroud)
在JDK-9中只需替换StreamEx为Stream.
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |