scenotaph:
Por ejemplo, tenemos una clase simple con algunos campos. Vamos a suponer, tenemos campos llamados 'nombre' y 'id'. Y quiero obtener el nombre de un objeto con id especificado y devolver algún DEFAULTNAME, si no hay tal objeto:
private List<MyObject> myObjects;
public String findFieldById(int id) {
MyObject matchingObj = myObjects.stream()
.filter(m -> m.getId() == id)
.findFirst().orElse(null);
return (matchingObj == null) ? "defaultName" : matchingObj.getName();
}
Mi pregunta es ¿cómo puedo fácilmente hacer esta comprobación en nulo en una corriente en una línea ?
Ousmane D .:
Puede llevar a cabo este tipo de operaciones en una tubería por mapeo de MyObject::getName
después de findFirst
proporcionar de otro modo un valor por defecto a través orElse
.
return myObjects.stream()
.filter(m -> m.getId() == id)
.findFirst()
.map(MyObject::getName)
.orElse("defaultName");