java内置的四大函数式接口

一、Consumer:消费型接口(void accept(T t))

举一个例子

public class LambdaTest {
    @Test
    public void test() {
        happyTime(500, new Consumer<Double>() {
            @Override
            public void accept(Double aDouble) {
                System.out.println("快乐的时光总是短暂!");
            }
        });
    }

    public void happyTime(double money, Consumer<Double> con){
        con.accept(money);
    }
}
// 定义了一个happyTime方法,该方法接收一个函数式接口(只含有一个抽象方法的接口,这里就是accept)
// java8以前我们用匿名内部类
public class LambdaTest {
    @Test
    public void test() {
        happyTime(500, money -> System.out.println("快乐的时光总是短暂"));
    }

    public void happyTime(double money, Consumer<Double> con){
        con.accept(money);
    }
}
// 这里采用lambda的写法, 首先要明白,happyTime的第二个参数,是一个函数式接口,实际在传入的时候要传入该接口的实现类的对象,这里采用lambda表示式实现
//为何在happyTime中要调accept()方法?
// 在调用happyTime()方法的时候,执行到con.accept(money);这一步
// 其实就是该接口实现类重写了该方法,然后调该实现类对象的方法即可
// 结合两种写法:可以看到也就是执行System.out.println("快乐的时光总是短暂!");这一句
//这一句就是接口实现类的重写accept方法的方法体
二、其余三大内置函数接口,及衍生接口与这差不多,不再说了!
posted @ 2019-06-05 23:30  HeliusKing  阅读(574)  评论(0编辑  收藏  举报