我目前面临代码可读性问题。问题如下:
拥有三个对象
// initialization skipped, all of three could be null as result of their initalization
Object obj1;
Object obj2;
Object obj3;
我想从它们创建两个 boolean 值,如下所示:
// all are null
boolean bool1 = (obj1 == null && obj2 == null && obj3 == null);
// any of them is null
boolean bool2 = (obj1 == null || obj2 == null || obj3 == null);
我知道 guava 提供了内置谓词,例如 isNull
和 notNull
。
有没有办法实现满足这两个 boolean 值的自定义谓词? (假设 .apply(..)
函数将采用 3 个参数)
最佳答案
我不确定你想要什么,但答案很可能是:是的,但这没有什么意义。
你可以使用
FluentIterable<Object> it =
FluentIterable.from(Lists.newArrayList(obj1, obj2, obj3));
boolean allNull = it.allMatch(Predicates.isNull());
boolean anyNull = it.anyMatch(Predicates.isNull());
但请放心,与正常方式相比,它的可读性要差得多,而且速度要慢得多。
关于java - 所有 Null、任何 Null 都是可能的 Guava 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700655/