Function、 Predicate、 Consumer、Supplier四大函数式接口详解

函数式接口:只有一个抽象方法的接口就是函数式接口
只要是函数式接口就可以使用Lambda表达式简化代码
使用函数式接口能简化编程模型

Function

函数型接口Function:有一个输入参数,有一个返回值

Function、 Predicate、 Consumer、Supplier四大函数式接口详解_第1张图片
举例:

public class FunctionTest {
     
    public static void main(String[] args) {
     
//        Function function = new Function<String,String>() {
     
//            @Override
//            public String apply(String str) {
     
//                System.out.println("apply()");
//                return str;
//            }
//        };
        Function function = (str)->{
      // Lambda表达式
            System.out.println("apply()");
            return str;
        };
        System.out.println(function.apply("hello world"));
    }
}

结果:

apply()
hello world

Predicate

断定型接口Predicate:有一个输入参数,返回一个布尔值

Function、 Predicate、 Consumer、Supplier四大函数式接口详解_第2张图片
举例:

public class PredicateTest {
     
    public static void main(String[] args) {
     
//        Predicate<String> predicate = new Predicate<String>() {
     
//            @Override
//            public boolean test(String str) {
     
//                return str.isEmpty();
//            }
//        };
        Predicate<String> predicate = (String str)->{
     
            return str.isEmpty();
        };
        System.out.println(predicate.test("hello world"));
    }
}

结果:

false

Consumer

消费型接口Consumer:有一个输入参数,没有返回值

Function、 Predicate、 Consumer、Supplier四大函数式接口详解_第3张图片
举例:

public class ConsumerTest {
     
    public static void main(String[] args) {
     
//        Consumer<String> consumer = new Consumer<String>() {
     
//            @Override
//            public void accept(String s) {
     
//                System.out.println(s);
//            }
//        };
        Consumer<String> consumer = (s)->{
      System.out.println(s); };
        consumer.accept("hello world");
    }
}

结果:

hello world

Supplier

供给型接口Supplier:没有输入参数,有一个返回值

Function、 Predicate、 Consumer、Supplier四大函数式接口详解_第4张图片
举例:

public class SupplierTest {
     
    public static void main(String[] args) {
     
//        Supplier<Integer> supplier = new Supplier<Integer>() {
     
//            @Override
//            public Integer get() {
     
//                System.out.println("get()");
//                return 1024;
//            }
//        };
        Supplier<Integer> supplier = ()->{
     
            System.out.println("get()");
            return 1024;
        };
        System.out.println(supplier.get());
    }
}

结果:

get()
1024

你可能感兴趣的:(Lambda表达式)