【发布时间】:2021-10-20 09:15:12
【问题描述】:
我有一个结构如下的布尔 Java 语句:
返回 A AND (B OR C OR D)
在 Java 中:
return A && (B || C || D);
我想通过使用链式谓词来重新表述这一点,但似乎我必须使用布尔代数的分配定律才能使其工作:
(A AND B) OR (A AND C) OR (A AND D) 这迫使我一直重复 A。
这就是我在 java 中得到的结果:
return A.and(B)
.or(A.and(C))
.or(A.and(D))
.test(params)
这似乎不会导致相同的结果,因为当我使用谓词版本时,我的测试用例会失败。
在不使用分配律的情况下,Java Predicates 是不可能的,还是我做错了什么?
【问题讨论】:
-
为什么不
A.and(B.or(C).or(D)).test(params)?