package Demo18;
/*
函数式接口的使用:一般可以作为方法的参数和返回值类型
*/
public class Demo01 {
//定义一个方法,参数使用函数式接口MyFunctionInterface
public static void show(MyFunctionInterface myInter){
myInter.method01();
}
public static void main(String[] args) {
//调用show方法,方法的参数是一个接口所以可以传递接口的实现类对象
show(new MyFunctionInterfaceImpl());
//调用show方法,传递方法的匿名内部类 简化实现类的编写
show(new MyFunctionInterface() {
@Override
public void method01() {
System.out.println("使用匿名内部类重写接口的抽象方法");
}
});
//调用show方法,方法的参数是一个函数式接口,所以我们可以使用Lambda表达式
//Lambda格式: 先准备好一个小括号 一个箭头 一个大括号 小括号(参数) 大括号{方法体}
show(()->{ //这里注意小括号方法没有参数
System.out.println("使用Lambda表达式重写接口中的抽象方法");
});
//简化Lambda表达式
show(()-> System.out.println("\"使用Lambda表达式重写接口中的抽象方法\"")
);
}
}
这里用了三中方法
1.直接show参数是实现了对象中的方法
2.可以不写接口的实现类直接匿名内部类简化
3.可以使用Lambda直接写 当然Lambda表达式也可以继续简化(Lambda表达式就是直接方法都有不用重写了 但是注意MyFunctionInterface类中一定是有这个抽象方法)
public interface MyFunctionInterface { //定义一个抽象方法 public abstract void method01();