作用:简化匿名内部类的代码写法
Lambda表达式的简化格式
(匿名内部类被重写方法的形参列表)->{
被重写方法的方法体代码
}
注:->是语法形式,无实际含义
注意: Lambda表达式只能简化函数式接口的匿名内部类的写法形式。
什么是函数式接口?
- 首先必须是接口、其次接口中有且仅有一个抽象方法的形式
- 通常我们会在接口上加一个@FunctionalInterface注解,标记改接口必须是满足函数式接口。
这段代码时没有简化前的代码
package com.itheima.demo;
public class Test {
public static void main(String[] args) {
Animal a =new Animal() {
@Override
public void run() {
System.out.println("猫咪很可爱");
}
};
a.run();
}
}
//class Cat extends Animal{
// @Override
// public void run() {
// System.out.println("猫咪很可爱呀");
// }
//}
abstract class Animal{
public abstract void run();
}
这段代码为简化后的代码
package com.itheima.demo;
public class Test {
public static void main(String[] args) {
Animal(()-> {
@Override
public void run() {
System.out.println("猫咪很可爱");
}
});
a.run();
}
}
//class Cat extends Animal{
// @Override
// public void run() {
// System.out.println("猫咪很可爱呀");
// }
//}
abstract class Animal{
public abstract void run();
}