四大函数式接口
四大函数式接口
新时代程序员必会:lambda表达式,链式编程,函数式接口, Stream流式计算
函数式接口:只有一个函数的接口. Example: Runnable, Callable都是常用的函数式接口
这四大函数式接口可以在javase文档中查看,java.util.function包下
Function 函数型接口
Predicate 判定型接口
Consumer 消费型接口
Supplier 供给型接口
函数型接口:接口输入一个是函数的输入一个是函数的输出
@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);
    // ... 两个默认函数和一个静态函数
}
package com.example.juc;
import java.util.function.Function;
public class TestFunction {
    public static void main(String[] args) {
//        Function fun = new Function() {
//            @Override
//            public Object apply(Object str) {
//                return str;
//            }
//        };
//        System.out.println(fun.apply("Happy"));
        Function fun = (str) -> str;
        System.out.println(fun.apply("Happy"));
    }
}
判定型接口:接口输入是函数的输入 函数的返回是一个布尔值
public interface Predicate<T> {
    /**
     * Evaluates this predicate on the given argument.
     *
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);
    // ...三个默认函数和一个静态函数
}
package com.example.juc;
import java.util.function.Predicate;
public class TestPredicate {
    public static void main(String[] args) {
//        Predicate<String> pre = new Predicate<String>() {
//            @Override
//            public boolean test(String str) {
//                return str.isEmpty();
//            }
//        };
//        System.out.println(pre.test("Happy"));
        Predicate<String> pre = (str) -> str.isEmpty();
        System.out.println(pre.test("Happy"));
    }
}
消费型接口:只有输入,没有输出
@FunctionalInterface
public interface Consumer<T> {
    /**
     * Performs this operation on the given argument.
     *
     * @param t the input argument
     */
    void accept(T t);
    // ...一个默认方法
}
供给型接口:只有输出,没有输入
@FunctionalInterface
public interface Supplier<T> {
    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}
package com.example.juc;
import java.util.function.Consumer;
public class TestConsumer {
    public static void main(String[] args) {
//        Consumer consumer = new Consumer<String>() {
//            @Override
//            public void accept(String str) {
//                System.out.println(str);
//            }
//        };
//        consumer.accept("Happy");
        Consumer consumer = (str) -> {
            System.out.println(str);
        };
        consumer.accept("Happy");
    }
}
package com.example.juc;
import java.util.function.Supplier;
public class TestSupplier {
    public static void main(String[] args) {
        Supplier supplier = () -> {
            System.out.println("get");
            return 1024;
        };
        System.out.println(supplier.get());
    }
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号