[英]How to define custom combine predicate?
I defined my own predicate:我定义了自己的谓词:
public interface StringPredicate extends Predicate<String> {
It works, but if I write:它有效,但如果我写:
myPred.and( strEl -> strEl != null);
the result is a Predicate<String>
not a StringPredicate
.结果是Predicate<String>
而不是StringPredicate
。 How can I define a combine operation as well?我怎样才能定义一个组合操作呢?
You can define your own and
method in your StringPredicate
interface:您可以在StringPredicate
接口中定义自己的and
方法:
public interface StringPredicate extends Predicate<String> {
default StringPredicate and(StringPredicate other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
}
Now, the following will work:现在,以下将起作用:
StringPredicate myPred = s -> s.length() > 0;
StringPredicate combined = myPred.and(strEl -> strEl.length () < 5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.