逐步走向响应式编程(一)-常见函数式接口- Predicate<T>

在了解函数式接口前,希望大家有一定的lamda表达式的基础,可以参考此博客。本文细说一下java8 常见的函数式接口-Predicate,希望对大家有一定的帮助。

本接口位于java.util.function包中,用的比较多,称之为断言接口,用于条件判断,其中唯一需要实现的方法为test(T t),其实现逻辑通常作为一个参数传到某个方法中。本人觉得可以这样去理解 Predicate,其实例是一个条件,条件是用来判断test(T t)中的参数是否成立,所以最终的关系是“条件.test(t)”。

源码解析

package java.util.function;
import java.util.Objects;
/**
 * <p>This is a <a href="package-summary.html">functional interface</a>
 * whose functional method is {@link #test(Object)}.
 *函数式接口,需要唯一实现的方法是test
 * @param <T> the type of the input to the predicate
 * java8引入的
 * @since 1.8
 */
@FunctionalInterface
public interface Predicate<T> {
   
    /**
     *对给定的参数判断其是否符合条件,所以实现test方法就是实现一套判断逻辑
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);
    /**
     * 与操作,可以用&&代替
     *
     * @param other a predicate that will be logically-ANDed with this
     *              predicate
     * @return a composed predicate that represents the short-circuiting logical
     * AND of this predicate and the {@code other} predicate
     * @throws NullPointerException if other is null
     */
    default Predicate<T> and(Predicate<? super T> other) {
   
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }
    /**
     *对给定的条件进行取反操作
     * @return a predicate that represents the logical negation of this
     * predicate
     */
    default Predicate<T> negate() {
   
        return (t) -> !test(t)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浦江之猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值