断言型接口,有参有返回值,返回值是boolean类型

    1. @FunctionalInterface
    2. public interface Predicate<T> {
    3. /**
    4. * 具体过滤操作 需要被子类实现.
    5. * 用来处理参数T是否满足要求,可以理解为 条件A
    6. */
    7. boolean test(T t);
    8. /**
    9. * 调用当前Predicate的test方法之后再去调用other的test方法,相当于进行两次判断
    10. * 可理解为 条件A && 条件B
    11. */
    12. default Predicate<T> and(Predicate<? super T> other) {
    13. Objects.requireNonNull(other);
    14. return (t) -> test(t) && other.test(t);
    15. }
    16. /**
    17. * 对当前判断进行"!"操作,即取非操作,可理解为 ! 条件A
    18. */
    19. default Predicate<T> negate() {
    20. return (t) -> !test(t);
    21. }
    22. /**
    23. * 对当前判断进行"||"操作,即取或操作,可以理解为 条件A ||条件B
    24. */
    25. default Predicate<T> or(Predicate<? super T> other) {
    26. Objects.requireNonNull(other);
    27. return (t) -> test(t) || other.test(t);
    28. }
    29. /**
    30. * 对当前操作进行"="操作,即取等操作,可以理解为 A == B
    31. */
    32. static <T> Predicate<T> isEqual(Object targetRef) {
    33. return (null == targetRef)
    34. ? Objects::isNull
    35. : object -> targetRef.equals(object);
    36. }