2017-05-29 105 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();