Page 1 of 1

Das Objektattribut bewertet in einer Java-Streams MAP () -Transformation immer zu nicht-null, obwohl es in einigen Fälle

Posted: 13 Feb 2025, 05:55
by Anonymous
Sagen Sie also, ich habe eine Klasse: < /p>

Code: Select all

public class Clazz {
final String someAttribute;

public String getSomeAttribute() {
return someAttribute;
}

public void setSomeAttribute(String someAttribute) {
this.someAttribute = someAttribute;
}
}
< /code>
Und ich habe das Attribut in der Klasse bedingt festgelegt. < /p>
Clazz someObject = new Clasz();
if(someCondition) {
someObject.setSomeAttribute(“someString”);
} else {

//  someAttribute is not set, so it is null.
}
< /code>
Wenn ich versuche, das Attribut über eine MAP () -Transformation zu erhalten und es in einer ternären Operation zu verwenden Obwohl es sein kann. < /p>
Optional.ofNullable(someObject)
.map(Clazz::getSomeAttribute)
.map(someAttribute->Objects.notNull(someAttribute)) ? “string1” : string2)
.orElse(“”);
Angesichts der Tatsache, dass SomeatTribute bedingt eingestellt ist, ist es möglich, dass es null ist. Aber ich bekomme eine Kompilierungszeitwarnung, die besagt, dass Objekte. Notnull (someattribute) immer falsch ist, d. H. Someattribute ist niemals null. Warum?
Danke im Voraus!