java内置的四大函数式接口
一、Consumer
举一个例子
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方法的方法体
二、其余三大内置函数接口,及衍生接口与这差不多,不再说了!
你所看得到的天才不过是在你看不到的时候还在努力罢了!