je peux extraire une section particulière en utilisant Java8 comme ci-dessousUtilisation de Java Optional.ofNullable efficacement
request.getBody()
.getSections()
.filter(section -> "name".equals(section.getName))
.findFirst();
Mais comment dois-je faire la même chose en utilisant en option dans une seule ligne . Je pourrais avoir le corps ou les sections nulles.
J'ai essayé le ci-dessous, mais ne fonctionne pas
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();
Je ne suis pas en mesure d'obtenir ce travail en une seule ligne. J'ai essayé de faire flatmap mais je ne travaillais pas aussi bien. S'il vous plaît aviser si nous pouvons y parvenir dans une ligne unique.
est Ci-dessous le schéma complet pour référence
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;
}
}
Remplacer '.filter (section -> "name" .equals (section.getName)). findFirst(); 'avec' .flatMap (sections -> sections.stream() .filter (section -> "nom" .equals (section.getName ())). findFirst()); ' – Holger