gpt4 book ai didi

java - 使用多个 getter 时使用 Try-Catch 而不是空检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:30 25 4
gpt4 key购买 nike

我的问题如下,我有一个很长的 Getter,即,

objectA.getObjectB().getObjectC().getObjectD().getObjectE().getName();

由于“糟糕的”数据库/实体设计(有些东西比其他东西引入得晚),发生了 getObjectB()getObjectC()getObjectD () 可以返回 NULL

通常我们一直使用空检查,但在这种情况下,我必须使用

ObjectB b = objectA.getObjectB();
if (b != null) {
ObjectC c = b.getObjectC();
if (c != null) {
ObjectD d = c.getObjectD();
if (d != null)
return d.getObjectE().getName();
}
}
return "";

相反,简单地使用 try-catch block 会容易得多

try {
return objectA.getObjectB().getObjectC().getObjectD().getObjectE().getName();
} catch (NullPointerException e) {
return "";
}

在这种情况下,我真的不在乎哪个对象返回 NULL,它要么显示名称,要么不显示。使用 try-catch 代替检查是否有任何并发​​症或设计不好?

感谢您的输入。

最佳答案

如果可以选择使用 Java 8,则可以使用 Optional如下:

Optional.ofNullable(objectA)
.map(a -> a.getObjectB())
.map(b -> b.getObjectC())
.map(c -> c.getObjectD())
.map(d -> d.getObjectE())
.map(e -> e.getName())
.orElse("");

关于java - 使用多个 getter 时使用 Try-Catch 而不是空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39037764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com