Ich bin auf einem Android-Projekt arbeiten, die eine Menge von seltsamen null verwendet in Java überprüft, was zu einer Codezeilen wie folgt aus:Zugang null Feld Java-Objekt ohne NPE
if (foo == null || foo.bar == null || foo.bar.foobar == null) {
return;
}
Ich versuche zu reinigen es bis die Utility-Klasse
public class Utility {
public static boolean allNotNull(Object... objects) {
for (Object object : objects) {
if (objectIsNull(object)) { return false; }
}
return true;
}
public static boolean anyAreNull(Object... objects) {
return !allNotNull(objects);
}
private static boolean objectIsNull(Object object) {
try {
return object == null;
} catch (NullPointerException e) {
return true;
}
}
}
mit dieser Klasse verwenden, würde Ich mag den Code
if (Utility.areAnyNull(foo.bar.foobar)) {
return;
}
U vereinfachen Leider stürzt dies vor dem Eingeben der areAnyNull-Funktion ab, wenn A null ist. Gibt es eine Möglichkeit zu verhindern, dass die Funktion abstürzt, ohne eine try catch-Anweisung um jedes meiner if (Utility ...) -Aufrufe einzubinden? Oder gibt es einen besseren Weg, um meine if-Anweisungen zu bereinigen und zu überprüfen, ob etwas null ist?
Von Ihrem 'java-7' Tag gehe ich davon aus Java 8 ist keine Option? – shmosel
Ja, mit Android. Ich könnte die rückportierten Java 8-Optionen verwenden, aber sie machen den Code nicht leichter lesbar. – communistWatermelon
Wenn Groovy eine Option für Sie ist, haben sie einen Null-sicheren Operator: 'foo? .bar? .foobar'. – chrylis