2017-05-29 109 views
1

我有這樣的條件:檢查對象爲空,則檢查是否該對象保持不空引用到另一個對象

if (someObject != null) 
    { 
     templateUri = someObject .getSettingsObject() != null 
       ? someObject .getSettingsObject().getPlanUri() : null; 
    } 

代替使用多個null檢查,可以予俱樂部這條件成一個單一的聲明並運行我的代碼而不會獲得NULL指針異常?

+2

使用'可選'用你'SettingsObject'和'PlanUri'。 https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html – nbokmans

回答

0

這將是更好地創造了處理這種情況的方法,但用一個語句,你可以這樣做:

templateUri = (someObject != null) ? (someObject.getSettingsObject()!=null ? someObject.getSettingsObject().getPlanUri() : null) : templateUri; 

如果someObject是空templateUri將與自身進行更換。

0

您可以嵌套條件運算(? :)

templateUri = someObject == null ? null 
        : someObject .getSettingsObject() == null ? null 
        : someObject .getSettingsObject().getPlanUri();