首先弄清函数式接口与Lamba表达式关系?(红色部分概念自行google)
只有有了函数式接口才可以写lamba表达式。
一、java内置的四种函数式接口
1. Predicate < T >接口是只有一个参数的返回布尔类型值的 断言型 接口
boolean test(T t);
2.Function <R , T >接口
R apply(T t)
3.Supplier <t>供给型接口
T get();
4.Consumer < T>消费型接口
void accpet(T t)
通过api提供的这四种函数式接口就可以写各种Lamba表达式了。
可以这样来理解:使用Lambda表达式,实际就是创建出该接口的实例对象。
Consumer实现例子
public class TestLamba{
public void test(){
happen(1000, (m) -> System.out.printLn("一共消费" + m + "元"));
}
//一般都是将给定的四个接口·在传入一个方法中封装一次,后面再另一个方法具体实现该方法
public void happen(double money, Consumer<Double> con{
con.accpet(money);
}
}
上面 (m) -> System.out.printLn("一共消费" + m + "元")) 相当于具体实现accept函数(按此方式理解, 只不过实现方式十分自由)
Supplier 实现例子
理解他们关系后可学习:java8新特性