一 函数式接口
定义:如果只包含了一个抽象方法,那么他就是一个函数式接口(这个接口里面只有一个方法,只能调用这个方法)
对于这样的接口,我们可以用Lamda表达式来创建其对象。
Lambda表达式:jdk1.8以后出现的新功能。能够大幅度减少代码数量。例如:
package com.cy;
public class demo {
//3.创建主函数
public static void main(String[] args) {
//4.在主函数里创建interface2的对象interface22并给个参数调用
interface1 interface22 = new interface2();
interface22.interface11("abc");
}
}
interface interface1 { //1.定义一个叫做interface1的接口,里面有一个带参数的interface11的方法
void interface11(String a);
}
class interface2 implements interface1 { //2.创建interface的实现类interface2并重写interface11方法
@Override
public void interface11(String a) {
System.out.println("interface接口的实现方法" + a);
}
}
这是没有使用Lambda表达式下的代码
package com.cy;
public class demo {
//2.创建主函数
public static void main(String[] args) {
//创建接口interface1的对象interface22并给一个a的String变量指向{}内的方法体
interface1 interface22 =(a) -> {
System.out.println("interface的接口实现方法"+a);
};
interface22.interface11("abc");
}
}
interface interface1 { //1.定义一个叫做interface1的接口,里面有一个带参数的interface11的方法
void interface11(String a);
}
可以明显看出代码变少了。
而Lambda表达式的用法为:
在主函数内使用
接口名 自定义名 =(有变量则在括号内,无则忽略)->{方法体};
注意:
- Lambda表达式需要在接口只有一个方法的情况下使用
- Lambda调用为自定义名.方法名