是否可以在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的新功能,并且好奇是否有可能。
3
从Java运行时的角度来看,两个Stream类型已经相同,因此不需要强制转换。诀窍是潜入编译器。(也就是说,假设这样做有意义。)
—
Hot Licks