是否可以在Java 8中强制转换Stream?

是否可以在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的新功能,并且好奇是否有可能。

回答:

我认为没有现成的方法可以做到。可能更清洁的解决方案是:

Stream.of(objects)

.filter(c -> c instanceof Client)

.map(c -> (Client) c)

.map(Client::getID)

.forEach(System.out::println);

或者,如注释中所建议,您可以使用cast方法-尽管前者可能更易于阅读:

Stream.of(objects)

.filter(Client.class::isInstance)

.map(Client.class::cast)

.map(Client::getID)

.forEach(System.out::println);

以上是 是否可以在Java 8中强制转换Stream? 的全部内容, 来源链接: utcz.com/qa/420277.html

回到顶部