如何避免方法链接检查空值?

user9521067:

我需要检查,如果某个值是空或不是。如果它不是null,则只是设置一些变量设置为true。这里没有else语句。我得到了太多的条件检查这个样子。

有什么办法来处理这个null检查而不检查所有方法的返回值?

if(country != null && country.getCity() != null && country.getCity().getSchool() != null && country.getCity().getSchool().getStudent() != null .....) {
    isValid = true;
}

我以为直接检验变量,忽略NullPointerException异常。这是一个好的做法呢?

try{
    if(country.getCity().getSchool().getStudent().getInfo().... != null)
} catch(NullPointerException ex){
    //dont do anything.
}
Kelvॊd:

不,它一般不会在Java中好的做法搭上NPE代替空检查你的引用。

您可以使用Optional,如果你更喜欢这样的事情:

if (Optional.ofNullable(country)
            .map(Country::getCity)
            .map(City::getSchool)
            .map(School::getStudent)
            .isPresent()) {
    isValid = true;
}

或者干脆

boolean isValid = Optional.ofNullable(country)
                          .map(Country::getCity)
                          .map(City::getSchool)
                          .map(School::getStudent)
                          .isPresent();

如果这是所有isValid应该进行检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章