【发布时间】:2015-10-28 23:16:47
【问题描述】:
我很抱歉标题,但我找不到用一句话描述问题的好方法。简而言之,我有很多遵循这种模式的 Java 代码
if (obj != null && obj.getPropertyX() != null) {
return obj.getPropertyX();
}
return defaultProperty;
可以改写为
return obj != null && obj.getPropertyX() != null ? obj.getPropertyX() : defaultProperty;
它仍然很难看,我想知道 Google Guava 或其他库中是否有一些 API 可以帮助清理此代码。具体来说,我正在寻找类似的东西
return someAPI(obj, "getPropertyX", defaultProperty);
我可以使用反射来实现此方法,但我不确定这是否是正确的方法。谢谢。
【问题讨论】:
-
其他语言有一个“安全导航运算符”,你可以说
obj?.getPropertyX()而不是obj == null ? null : obj.getPropertyX()。例如,Groovy 和 C#。但是 Java 选择使用 Optional 类。 docs.groovy-lang.org/latest/html/documentation/…