是否可以在 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 的新特性,并且很好奇这是否可行。
原文由 Phiction 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不认为有一种开箱即用的方法。一个可能更清洁的解决方案是:
或者,如评论中所建议的,您可以使用
cast
方法 - 前者可能更容易阅读: