gpt4 book ai didi

java - 有效使用 JavaOptional.ofNullable

转载 作者:行者123 更新时间:2023-12-02 11:06:43 25 4
gpt4 key购买 nike

我可以使用 Java8 提取特定部分,如下所示

request.getBody()
.getSections()
.filter(section -> "name".equals(section.getName))
.findFirst();

但是我如何在单行中使用可选来执行相同的操作。我的正文或部分可能为空。

我尝试了以下但不起作用

Optional.ofNullable(request)
.map(Request::getBody)
.map(Body::getSections)
.filter(section -> "name".equals(section.getName)) //compliation error. section is coming as a list here
.findFirst();

我无法在一行中使其工作。我尝试做 flatMap 但效果不好。请告知我们是否可以在一行中实现这一目标。

以下是完整的架构供引用

class Request {
Body body;

public Body getBody() {
return body;
}

public void setBody(Body body) {
this.body = body;
}

}

class Body {
List<Section> sections;

public List<Section> getSections() {
return sections;
}

public void setSections(List<Section> sections) {
this.sections = sections;
}

}

class Section {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

最佳答案

您需要从表示单个值的 Optional 转换为 Stream,以完成 filterfindFirst( ) 操作。至少有一种方法是映射到一个空的 Stream(或相邻答案中的空的 List),以防出现任何空值:

Optional.ofNullable(request)
.map(Request::getBody)
.map(Body::getSections)
.map(List::stream)
.orElse(Stream.empty())
.filter(section -> "name".equals(section.getName))
.findFirst();

关于java - 有效使用 JavaOptional.ofNullable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46681866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com