Predicate<T> and(Predicate<T> p1, Predicate<T> p2) {
}
我想创建上面的方法,如果谓词p1和p2都评估为真,则创建另一个谓词,该值计算结果为真。
如果返回类型是布尔值,我会知道如何做到这一点但我无法想到如何创建另一个解决这个问题的谓词...我已经尝试过使用andThen方法和测试方法
非常感谢任何帮助!
答案 0 :(得分:4)
您可以将Predicate
's default method and
用于此目的。
返回一个组合谓词,表示该谓词和另一个谓词的短路逻辑AND。
使用:
Predicate<T> and = p1.and(p2);
Predicate
界面还有or
和negate
默认方法。
答案 1 :(得分:1)
这已经是implemented in the standard library了,但如果你想自己实现它,你只需将参数传递给两个谓词 - return (operand) -> p1.test(operand) && p2.test(operand);
答案 2 :(得分:1)
幸运的是Predicate
已经有方法Predicate<T> and(Predicate<? super T> other)
。内置。你可以打电话
Predicate<T> and(Predicate<T> p1, Predicate<T> p2) {
return p1.and(p2)
}