Java四大函数式接口(Function、Consumer、Supplier、Predicate)

  • java.util.function , Java 内置核心四大函数式接口,可以使用lambda表达式

Java四大函数式接口(Function、Consumer、Supplier、Predicate)_第1张图片

  • Function(函数型接口)

函数类型,有传入的参数,也有返回值,点进源码可以看出:

Java四大函数式接口(Function、Consumer、Supplier、Predicate)_第2张图片

 其中T为参数,R为返回值

代码示例:

    public static void main(String[] args) {
        //输出输入的数值
        Function function = (str)->{
            return str;
        };
        System.out.println(function.apply("hello"));
    }

  • Consumer(消费型接口)

消费类型,即只支出没有收入(有传入参数,没有返回值),点进源码查看:

Java四大函数式接口(Function、Consumer、Supplier、Predicate)_第3张图片

 只有传入的参数T,并没有返回值

代码示例:

    public static void main(String[] args) {
        //Consumer consumer = new Consumer() {
        //    @Override
        //    public void accept(String str) {
        //        System.out.println(str);
        //    }
        //};
        //输出传入的参数
        Consumer consumer = (str)->{
            System.out.println(str);
        };

        consumer.accept("hello");

    }

  • Supplier(供给型接口)

供给类型,即只有返回值,没有参数,点进源码:

Java四大函数式接口(Function、Consumer、Supplier、Predicate)_第4张图片

只有一个返回值T

代码示例:

    public static void main(String[] args) {
        //Supplier supplier = new Supplier() {
        //    @Override
        //    public Integer get() {
        //        System.out.println("get()");
        //        return 1024;
        //    }
        //};
        //输出程序员最喜欢的1024
        Supplier supplier = ()->{
            return 1024;
        };

        System.out.println(supplier.get());
    }

 

  • Predicate(断定型接口)

有输入也有返回值,但返回值类型为boolean,点进源码:

Java四大函数式接口(Function、Consumer、Supplier、Predicate)_第5张图片

 T为参数,返回值为boolean

代码示例:

    public static void main(String[] args) {
        //判断字符串是否为空
        //Predicate predicate = new Predicate() {
        //    @Override
        //    public boolean test(String str) {
        //        return str.isEmpty();
        //    }
        //};
        //判断字符串是否为空
        Predicate predicate = (str)->{
            return str.isEmpty();
        };

        System.out.println(predicate.test("hello"));
    }

你可能感兴趣的:(JUC,java,开发语言)