【发布时间】:2014-04-26 01:05:33
【问题描述】:
是否可以在 Java 8 中转换流?假设我有一个对象列表,我可以这样做来过滤掉所有其他对象:
Stream.of(objects).filter(c -> c instanceof Client)
不过,在此之后,如果我想对客户做点什么,我需要对他们每个人进行强制转换:
Stream.of(objects).filter(c -> c instanceof Client)
.map(c -> ((Client) c).getID()).forEach(System.out::println);
这看起来有点难看。是否可以将整个流转换为不同的类型?喜欢将Stream<Object> 转换为Stream<Client>?
请忽略这样一个事实,即这样做可能意味着糟糕的设计。我们在我的计算机科学课上做过类似的事情,所以我正在研究 java 8 的新特性,并且很好奇这是否可能。
【问题讨论】:
-
从 Java 运行时的角度来看,这两种 Stream 类型已经相同,因此不需要强制转换。诀窍是让它通过编译器。 (也就是说,假设这样做是有意义的。)
标签: java java-8 java-stream