当前位置: 首页 > 面试题库 >

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

韩晋
2023-03-14
问题内容

是否可以在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);


 类似资料:
  • 问题内容: 我有以下代码将nvarchar转换为整数: 但是,我无法控制参数@value,因此代码可能会失败。无论如何,在进行转换之前是否要检查是否可以进行转换? 问题答案: 好吧,在SQL Server 2012中,您可以使用新的TRY_CAST(),但在SQL Server 2008中,您应该能够使用ISNUMERIC(),然后包括对未通过该测试的值进行处理。

  • 问题内容: 我进入字节和对象类型的函数消息数组,我需要从字节恢复对象。Java中是否有像C ++一样的类型转换? 问题答案: 不,您可以使用序列化。

  • 问题内容: 我有一个使用JAXB编组为XML的对象。一个元素包含一个包含引号(“)的字符串。生成的XML具有”“所在的位置。 即使通常首选这样做,我也需要我的输出来匹配 旧 系统。如何强制JAXB不转换HTML实体? - 感谢您的答复。但是,我从未见过调用处理程序escape()的情况。您可以看看我在做什么吗?谢谢! - 输出是这样的: 如您所见,该回调从未显示。(一旦调用了回调,我将担心让它实际

  • 问题内容: 所以这工作: 但这不是: 总而言之,我得到了第一部分(拳击),但是我发现第二部分不起作用是非常不直观的。是否有特定的原因(除了String从Object继承而int不从Object继承)? 编辑: 为了完善我的问题,这也可以: 但是,以下内容却没有: 令人惊讶的是,您遇到了与String相同的问题: 在最后一行产生类强制转换异常。仍然有效: 问题答案: 我刚刚找到了我正在寻找自己的答案

  • 问题内容: 我希望我的android应用程序的用户可以选择向我发送任何使我的应用程序崩溃的未捕获异常的stacktrace。本来我以为我会将每个进入点包装到我的应用程序中,放在try / catch块中,但是即使在我的小型应用程序中,也有太多这样的事情,这才是合理的。 因此,我真正寻找的是一种将某些方法指定为任何未捕获的异常的默认处理程序的方法。有什么建议? 问题答案: 您不能执行主题行在SDK应

  • 问题内容: 我知道,当我阅读答案时,会发现我已经忽略了我眼中的事物。但是我花了最后30分钟试图自己弄清楚,但没有结果。 因此,我正在用Java 6编写程序,并发现了一些(对我而言)奇怪的功能。为了尝试隔离它,我举了两个小例子。我首先尝试了以下方法: 编译器拒绝了它:类型不匹配:无法从null转换为int。 这对我来说很好,并且尊重我熟悉的Java语义。然后我尝试了以下方法: 编译没有错误!但是,我