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

标签 java java-8 predicate

我定义了自己的谓词:

public interface StringPredicate extends Predicate<String> {

它有效,但如果我写:

myPred.and( strEl -> strEl != null);

结果是 Predicate<String>不是StringPredicate 。我如何定义组合操作?

最佳答案

您可以在 StringPredicate 接口(interface)中定义自己的 and 方法:

public interface StringPredicate extends Predicate<String> {
    default StringPredicate and(StringPredicate other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }
}

现在,以下内容将起作用:

StringPredicate myPred = s -> s.length() > 0;
StringPredicate combined = myPred.and(strEl -> strEl.length () < 5);

关于java - 如何定义自定义组合谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62152001/

相关文章:

Java 8 lambda 从对象列表创建字符串列表

Java,首先从 O(n) 时间复杂度的数组中复制值

vector - 有没有办法根据谓词排出向量的一部分?

java - 严重: Exception sending context initialized event to listener instance of class [org. springframework.web.context.ContextLoaderListener]

java - Android OnClick 播放声音并更改按钮图像。

Java 8 ImageIO 在 Linux 中错误地读取 JPEG

vb.net - 如何将附加参数传递给谓词?

java - 谓词中的运算符作为 lambda 表达式中的参数

java - JSP/Servlet 获取表单数据

java - 通过嵌套列表对象中的多个值查找对象 Hibernate、Jpa