Java8新特性:Lambda表达式 四大内置核心函数式接口

Java8函数式接口很多,知道这四大核心的就ok了,其他的以此类推。

1.消费型接口:Consumer

@FunctionalInterface
public interface Consumer<T> {

    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);

  
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

2.供给型接口:Supplier

@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

3.函数型接口:Function

@FunctionalInterface
public interface Function<T, R> {

    /**
     * Applies this function to the given argument.
     *
     * @param t the function argument
     * @return the function result
     */
    R apply(T t);

    default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
        Objects.requireNonNull(before);
        return (V v) -> apply(before.apply(v));
    }

    default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
        Objects.requireNonNull(after);
        return (T t) -> after.apply(apply(t));
    }

    static <T> Function<T, T> identity() {
        return t -> t;
    }
}

4.断言型接口:Predicate

@FunctionalInterface
public interface Predicate<T> {

     boolean test(T t);

    default Predicate<T> and(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }

    default Predicate<T> negate() {
        return (t) -> !test(t);
    }

    default Predicate<T> or(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) || other.test(t);
    }

    static <T> Predicate<T> isEqual(Object targetRef) {
        return (null == targetRef)
                ? Objects::isNull
                : object -> targetRef.equals(object);
    }
}

 

======================================================================

消费型接口使用示例:

Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 

 Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 

  供给型接口使用示例:

Java8新特性:Lambda表达式  四大内置核心函数式接口

 

Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 

函数型接口使用示例:

Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 

断言型接口使用示例:

Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 Java8新特性:Lambda表达式  四大内置核心函数式接口

 

 Java8新特性:Lambda表达式  四大内置核心函数式接口

 Java8新特性:Lambda表达式  四大内置核心函数式接口

 

上一篇:Java8 函数式接口 @FunctionalInterface以及常用Consumer、Supplier、Function、Predica


下一篇:linq中的All