java - 所有 Null、任何 Null 都是可能的 Guava 谓词

标签 java null guava predicate notnull

我目前面临代码可读性问题。问题如下:

拥有三个对象

// 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 提供了内置谓词,例如 isNullnotNull

有没有办法实现满足这两个 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/

相关文章:

java.lang.ArrayIndexOutOfBoundsException : 1

java - 如何从属性文件配置 Hystrix 注释?

java - 多次循环一个方法会导致错误

java/jackson - @JsonValue/@JsonCreator 和 null

java - 正则表达式在 Guava 中不起作用

java - 如何将外部随机数生成器与 java.security.KeyPairGenerator 一起使用?

java - 使用android时关闭android View :layout_centerVertical ="true"?

android - EditText 一直返回 null?

java - 扩展抽象类时出现 Spring BeanDefinitionStoreException

java - 使用 session 序列化处理 Vaadin 中不可序列化的 Guava EventBus