java - 如何在 java Stream API 中对对象进行类型转换?
问题描述
如何在嵌套列表的 Object - 中对对象进行类型转换:
C c = GenericScreenDataBean fieldObjx = this.expenseLineItemList.stream()
.flatMap(a -> a.getSectionModel().getControls().stream())
.filter(b -> b.getData() instanceof GenericScreenDataBean)
.map(GenericScreenDataBean.class::cast)
.filter(c->c.getFieldKey().equals("IncurredAmount")).findAny().orElse(null);
正如上面提到的代码,以下是描述-:
List<expenseLineItemList>
是List
我为其调用流 API 的主服务器,然后我在List<Controls>
.
现在,类中的数据getObject()
是Controls
我试图在这里进行类型转换的 Object 类型。由于 map 函数map(GenericScreenDataBean.class::cast)
将Controls.class
转换 ,我得到了类型转换异常。
那么,Controls.class
我怎样才能对 进行类型转换getControls().getObject()
并过滤掉所需的结果,而不是对 进行类型转换?
解决方案
看来您缺少一个map
步骤:
C c = GenericScreenDataBean fieldObjx = this.expenseLineItemList.stream()
.flatMap(a -> a.getSectionModel().getControls().stream())
.filter(b -> b.getData() instanceof GenericScreenDataBean)
.map(Controls::getData)
.map(GenericScreenDataBean.class::cast)
.filter(c->c.getFieldKey().equals("IncurredAmount")).findAny().orElse(null);
或者,如果你想要一个map
,你可以使用 lambda 表达式而不是方法引用:
C c = GenericScreenDataBean fieldObjx = this.expenseLineItemList.stream()
.flatMap(a -> a.getSectionModel().getControls().stream())
.filter(b -> b.getData() instanceof GenericScreenDataBean)
.map(c -> (GenericScreenDataBean) c.getData())
.filter(c->c.getFieldKey().equals("IncurredAmount")).findAny().orElse(null);
推荐阅读
- reactjs - Redux-persist 不断加载
- java - Minecraft 服务器 Java Jvm 参数
- asp.net - 当文件已被删除时,ASP.NET 发布 Web 应用程序复制文件错误
- c++ - 清除具有已删除赋值运算符的成员的类实例
- python - 为什么 60GB 内存在 MySQL 连接器 fetchall() 上消失?
- java - 做while无限循环
- php - 没有提交按钮的 Goutte 提交表单
- apache - 在 Nextcloud 中使用 .htaccess 获得漂亮的 URL
- php - 尝试使用 ErrorDocument 处理请求时出现错误 500 内部服务器错误
- r - 具有因子变量的 FactoMineR PCA