如何处理多个空值?

1 java if-statement

假设我有一个SOA.现在我进行服务调用,我得到一个对象,它将嵌套对象作为字段.让我们说:

class A {
 B b;
}
class B {
  C c;
}
class C {
  D d;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我需要访问来自D类的字段,当我将对象作为服务调用的响应时,我需要执行:

if(a == null || a.getB() == null || a.getB().getC() == null || a.getB().getC().getD() == null) {
  throw someexception();
}
Run Code Online (Sandbox Code Playgroud)

是否有一种优雅的方式来处理相同的谓词?

Pet*_*rey 10

你可以使用Optional:

D d = Optional.ofNullable(a)
        .map(A::getB)
        .map(B::getC)
        .map(C::getD)
        .orElseThrow(MyNullException::new);
Run Code Online (Sandbox Code Playgroud)

orElseGet(D::new)如果要使用默认值,也可以执行此操作.

  • 这很漂亮 (2认同)