2016-03-31 41 views
3

我想知道在Android中是否有任何設計模式,第三方庫或任何處理null的Annotation處理器?註釋或一些自動代碼生成設置默認值,以避免Android/Java中的NullPointerExceptions?

例如,假設您使用Gson解析JSON Response,並使用Gson將響應字符串直接映射到Object named "Person"

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

,你要在UI上顯示它們,我的問題是如何避免NULL pointer Exception without checking for Nulls for each field when displaying this data.

有註釋處理器或允許您提供空值替換任何圖書館?這樣

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

東西,所以我們能避免所有這些領域空檢查報表,並要求當有干將是否存在,如果有null,則提供默認值它提供的價值。有什麼建議麼?

編輯:我知道處理空指針崩潰

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 

兩種方式,但我的問題是有沒有減少的這幾行代碼,並使用一些自動生成的東西的方法嗎?某種註解的,我相信

+0

只需修改getter方法(http://stackoverflow.com/questions [使用GSON反序列化時設置缺省值的變量]到默認值 –

+0

可能的複製返回/ 30216317/setting-default-value-to-a-variable-when-deserializing-using-gson) –

+0

上面的重複引用不回答我的問題 –

回答

1

此功能仍在開發中,但你可能想嘗試的數據綁定支持庫:

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

綁定系統對NullPointerException有一些保護。此外,它支持顯式默認設置:

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

默認的數據綁定是非常接近我所尋找的,謝謝你的repy和給我看一些新的東西,因爲我以前沒有意識到這一點。+ 1爲你,也接受ypur答案。再次感謝! –

+0

從數據綁定我發現這個: 如果被訪問的屬性返回null,則可以在表達式中使用空合併運算符(??)以提供默認值 –

1

沒有存儲的默認值,如果您收到NULL,爲了減少你應該在getter方法使用setter和getter方法的每一步空檢查檢查你的價值,如果它比它空庫返回默認值,所以在每一步你都不需要檢查NULL值。

0

沒有圖書館,但你可以做這樣的事情:

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