Java8(示例代码在github上)
函数
(可以作为值进行传递)
Lambda(匿名函数)
格式:(参数列表)->{方法体}
原理:函数式接口
接口里只有一个抽象方法。并在接口上通常用@FunctionalInterface修饰
如果接口用了@FuncationalInterface修饰,但却不止一个抽象方法,编译时会报错。
jdk提供的通用函数式接口
Comparator、Runnalbe、Callable
四个基础的函数式接口
Function
Consumer 有一个参数,没有返回值
Supplier 没有参数,有一个返回值
Predicate 断言,有一个参数,返回一个boolean类型
基于四个基础函数式接口延伸出来的函数式接口
基本类型函数式接口
可以传递两个参数的函数式接口
复合Lambda
原理:默认方法和静态方法
默认方法
表现形式:在返回值前面加default,就可以定义一个默认实现
使用场景
场景一:减少非必要的模版代码;
场景二:实现的行为的多继承。
(java中只能继承一个类,但可以实现多个接口)
冲突的解决
原则一:类的方法优先级最高;
原则二: