正文
可以用于简化匿名内部类的写法
并且,Lambda表达式只能够简化函数式接口的匿名内部类的写法
什么是函数式接口?
定义:
有且仅有一个抽象方法的接口叫做函数式接口,可以在接口上方加上@FunctionalInterface进行注解
举例
@FunctionalInterface
public interface swim {
public abstract void swimming();
}
就代表一个函数式接口
举例
在之前,假如有一个方法,形参是一个接口的实现类对象,如:
public static void method(swim s){
s.swimming();
}
接口代码:
public interface swim {
public abstract void swimming();
}
我们去调用该方法时,可以采取匿名内部类的方式:
完整代码:
public class Test {
public static void main(String[] args) {
method(new swim() {
@Override
public void swimming() {
System.out.println("我在游泳");
}
});
}
public static void method(swim s){
s.swimming();
}
//定义一个游泳行为的接口
public interface swim {
public abstract void swimming();
}
}
我们发现该接口为函数式接口,调用方法的形参也为swim s,因此可以采用Lambda表达式进行简化书写
method(()->{
System.out.println("我在游泳");
});
完整代码
public class Test {
public static void main(String[] args) {
method(()->{
System.out.println("我在游泳");
});
}
public static void method(swim s){
s.swimming();
}
//定义一个游泳行为的接口
@FunctionalInterface
public interface swim {
public abstract void swimming();
}
}