我需要检查,如果某个值是空或不是。如果它不是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.
}
不,它一般不会在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] 删除。
我来说两句