使用Java,为了安全地访问深层嵌套引用
a.b.c.d.e,我们通常必须在每个级别指定空检查或包装Optional并使用orElse().(与Kotlin/C#等语言a?.b?.c?.d?.e或类似作品不同.
我想知道以下帮助方法是否是一个合理的替代方法:
public <T> T valueOrNull(Supplier<T> expression) {
try {
return expression.get();
} catch (NullPointerException e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
然后可以安全地使用它value = valueOrNull(() -> a.b.c.d.e).
注意:据我所知,NullPointerException由于性能原因等原因,捕获s通常是不受欢迎的,但是想知道这里的用法是否是一个合理的例外.