2016-03-31 9 views
3

Ich möchte wissen, ob in Android gibt es ein Design-Muster, Third-Part-Bibliothek oder alle Annotation-Prozessoren, die Null behandelt?Annotation oder eine automatisierte Code-Generierung zum Setzen von Standardwerten, um NullPointerExceptions in Android/Java zu vermeiden?

Angenommen, Sie analysieren einen JSON Response mit und ordnet den Antwortstring direkt einem Object named "Person" mit Gson zu.

Now assume Person has 3 fields 
1) Name 
2) Age 
3) Gender 

und Sie sind über sie auf UI angezeigt werden, meine Frage ist, wie ich ein NULL pointer Exception without checking for Nulls for each field when displaying this data.

vermeiden

Gibt es eine Annotation-Prozessor oder eine Bibliothek, die Sie null Wiederbeschaffungswerte bieten können? So etwas wie dies

@defVal("N/A") 
private String name; 
@defVal(0) 
private int age; 
@defVal("N/A") 
private String gender; 

so können wir null Check-Anweisungen für all diese Felder vermeiden und beim Aufruf von dort Getter es den Wert liefert, wenn vorhanden, wenn es null ist liefert dann die Standardwerte. Irgendwelche Vorschläge?

EDIT: Ich kenne die beiden Möglichkeiten für den Umgang mit Null-Zeiger-Absturz

1) to use try catch 
2) to use Getters and inside every getter i should check the null value and sets a default value if there is null 

Aber meine Frage ist, ist es eine Möglichkeit, diese Zeilen Code zu reduzieren und einige Auto Generation Ding zu benutzen? Irgendeine Art von Anmerkungen Ich glaube

+0

einfach die Getter-Methoden ändern, um ein Standardwert –

+0

Mögliche Duplikat [Einstellung Standardwert auf eine Variable bei der Verwendung von Gson Deserialisieren] zurückzukehren (http://stackoverflow.com/questions/30216317/setting-default-value-to-a-variable-wenn-deserializing-using-gson) –

+0

die obige doppelte Referenz beantwortet nicht meine Frage –

Antwort

1

Diese Funktion ist noch in der Entwicklung, aber Sie könnten wollen die Datenbindung Unterstützung Bibliothek auszuprobieren:

http://developer.android.com/tools/data-binding/guide.html

Das Bindungssystem hat einen gewissen Schutz vor NullPointerException. Außerdem unterstützt es explizite Einstellung Standardwert:

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@{user.firstName, default=PLACEHOLDER}"/> 
+0

, dass Standard-Datenbindung ist ziemlich nah an dem, was ich suchte, Danke für Ihre repy und zeigt mir etwas Neues, wie ich das vorher nicht bewusst war. + 1 für Sie und auch akzeptiert ypur answer.Thanks Again! –

+0

Von der Datenbindung fand ich das: Der Nullkoaleszenzoperator (??) kann in einem Ausdruck verwendet werden, um einen Standardwert bereitzustellen, wenn die aufgerufene Eigenschaft null zurückgibt –

1

Es gibt keine Bibliothek, die Standardwerte speichern, wenn Sie NULL erhalten, Um NULL-Prüfung bei jedem Schritt zu reduzieren, sollten Sie Setter und Getter-Methode in Getter-Methode überprüfen, wenn es null ist Standardwerte zurückgeben, so dass bei jedem Schritt kein NULL-Wert überprüft werden soll.

0

Es gibt keine Bibliothek, aber man kann so etwas tun:

public getValue(){ 
    return(value!=null?value:defaultValue); 
}