Java 函數接口Functional Interface

創建: 2020/11/27

完成: 2020/11/27

 

https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

Functional interfaces provide target types for lambda expressions and method references.

函數接口提供lambda表達式和函數變量的數據類型

java.util.function.*

主要接口
Runnable

java.lang

常用於Thread

public interface Runnable {
    public abstract void run();
}

 

Supplier<T>  沒有參數返回一個值
public interface Supplier<T> {
    public abstract T get();
}

 

 
Consumer<T>  有一個參數沒有返回值
public interface Consumer<T> {
    void accept<T t>;
    default Consumer<T> andThen(ConSumer<? super T> after) {
        Object.requireNoNull(requireNonNull);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

 

Function<T, R>

 有一個參數一個返回值

public interface Function<T, R> {
    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;
    }
}

 

 

Prediable<T>

 有一個參數返回一個boolean

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);
    }
}

 

 

   
   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章