Oft finde ich mich beim Abrufen eines Wertes aus einer Datenhierarchie auf Null überprüft, um NullPointerExceptions zu vermeiden, die meiner Meinung nach fehleranfällig sind und viel Boilerplate erfordern.
Ich habe eine sehr einfache Routine geschrieben, mit der ich die Nullprüfung beim Abrufen eines Objekts überspringen kann ...
public final class NoNPE {
public static <T> T get(NoNPEInterface<T> in) {
try {
return in.get();
} catch (NullPointerException e) {
return null;
}
}
public interface NoNPEInterface<T> {
T get();
}
}
Ich benutze es ein bisschen so ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
Das obige führt dazu, dass ich ein Room-Objekt oder eine Null erhalte, ohne alle übergeordneten Ebenen überprüfen zu müssen.
Was haltet ihr von dem oben genannten? Schaffe ich ein problematisches Muster? Gibt es Ihrer Meinung nach einen besseren Weg, dies zu tun?
Option
(oder Maybe
) Monade wiederentdeckt :)
java.util.Optional
anstelle von Nullen fehlende Daten darstellt. Dies bietet praktische Hilfsprogramme sowohl für den beschriebenen Fall als auch für Fälle, in denen Sie mit Standarddaten