只能对于函数式接口的匿名内部类进行简化
即只能对于只有一个抽象方法的接口运用lambda表达式
因为就只有在函数式接口中,JVM才会知道你这是在实现哪个接口的哪个方法
可以在接口上加注解:@FunctionalInterface,约束这个接口只能是函数式接口
简化原理:
// 例如有一个接口如下:
interface Swimming{
void swim();
}
我们正常创建匿名内部类:
Swimming s = new Swimming(){
@Override
public void swim(){
...
}
};
使用lambda表达式之后:
Swimming s = ()-->{
...
};
也就是说只需要写(重写方法形参列表)–>{
方法体
};即可,其他的都可以省略
这也是为什么只能对于函数式接口使用,因为根本没说方法名
进一步简化