简体   繁体   English

如何定义自定义组合谓词?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM