函数式接口

1、函数式接口概念

        函数式接口是指:有且仅有一个抽象方法的接口。一般会使用@FunctionalInterface接口来进行标记。可以用作Lambda表达式的类型。

2、常用的函数式接口

2.1 Supplier接口

package com.fjhb.functional;

import java.util.function.Supplier;

public class SupplierDemo {

    class Data{
        private Integer num;

        public Integer getNum() {
            return num;
        }

        public void setNum(Integer num) {
             this.num = num;
         }
    }
    public static void main(String[] args) {
        SupplierDemo supplierDemo = new SupplierDemo();
        Data data = supplierDemo.new Data();
        data.setNum(10);
        countNum(data::getNum);
    }

    private static void countNum(Supplier supplier){
        // 生产数据
        Integer num = supplier.get();
        //输出20
        System.out.println(String.format("计算后的数据为%s",num+10));
    }
}

2.2 Consumer接口

package com.fjhb.functional;

import java.util.function.Consumer;

public class ConsumerDemo {
    public static void main(String[] args) {

        //匿名内部类方式
        countNum(new Consumer() {
            @Override
            public void accept(Integer integer) {
                System.out.println(String.format("计算后的值:%s",integer+10));
            }
        },2);

        //Lambds 方式
        countNum(num -> System.out.println(String.format("计算后的值:%s",num+10)) ,2);
    }


    private static void countNum(Consumer consumer,int num){
        //消费num 数据
        consumer.accept(num);
    }

}

2.3 Predicate接口

package com.fjhb.functional;

import java.util.function.Predicate;

public class PredictDemo {
    public static void main(String[] args) {

        //匿名内部类
        // 输出 false
        verifyData(new Predicate() {
            @Override
            public boolean test(Integer integer) {
                return integer == 9;
            }
        },10);

        //lambda
        //输出 true
        verifyData((num)->num== 10,10 );

    }

    private static void verifyData(Predicate predicate,Integer num){
        System.out.println(predicate.test(num));
    }
}

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