如何在嵌套列表的对象内对对象进行类型转换 -:
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
class 是我试图在这里进行类型转换的对象类型。如 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);
或者,如果您想要单个映射
,您可以使用 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);
关于java - 如何在 java Stream API 中对对象进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59084021/