Ris*_*sal 7 java java-8 java-stream
我如何在嵌套列表的对象-中键入对象:
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);
Run Code Online (Sandbox Code Playgroud)
如上面提到的代码,以下是描述:
List<expenseLineItemList>是List我要为其调用流API的主服务器,然后在上进行流传输List<Controls>。
现在,数据getObject()的Controls类对象的,我想在这里强制转换的类型。由于map函数map(GenericScreenDataBean.class::cast)将Controls.class转换,因此我收到了typecasting异常。
因此,除了强制转换之外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);
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要单个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);
Run Code Online (Sandbox Code Playgroud)