通常,我可以看到如下代码结构:
if(a == null || b == null || c == null){
//...
}
我想知道是否有任何广泛使用的库(Google、Apache 等)可以同时检查多个对象的无效性,例如:
if(anyIsNull(a, b, c)){
//...
}
或者
if(allAreNulls(a, b, c)){
//...
}
更新:
- 我完全知道如何自己写
- 我知道这可能是程序结构不佳的结果,但这里不是这种情况
- 让我们让它更具挑战性,并用这样的东西替换原来的例子:
if(a != null && a.getFoo() != null && a.getFoo().getBar() != null){
//...
}
更新 2:
我为 Apache Commons Lang 库创建了一个 pull request 来解决这个问题:
- 问题: https ://issues.apache.org/jira/browse/LANG-781
- 公关: https ://github.com/apache/commons-lang/pull/108
这些将合并到 commons-lang 版本 3.5 中:
anyNotNull (Object... values)
allNotNull (Object... values)
原文由 Krzysztof Wolny 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑 2018: 从 Apache Commons lang 3.5 开始,有
ObjectUtils.allNotNull()
和ObjectUtils.anyNotNull()
。不。
Apache Commons Lang (3.4) 、 Google Guava (18) 和 Spring (4.1.7) 都没有提供这样的实用方法。
如果你真的、真的需要它,你需要自己写。不过,在现代 Java 代码中,我可能会认为需要这样的构造是一种代码味道。