/**
* @ClassName Demo
* @Description Lambda表达式--《Lambda表达式》-基础
* @author TianJianWen
* @data 2019年11月14日下午3:27:26
*
*/
public interface Demo_01 {
public static void main(String[] args) {
/**
* 无参无返回
*/
// 1.传统方式 需要new接口的实现类来完成对接口的调用
ICar car1 = new IcarImpl();
car1.drive();
// 2.匿名内部类使用
ICar car2 = new ICar() {
@Override
public void drive() {
System.out.println("Drive BMW");
}
};
car2.drive();
// 3.无参无返回Lambda表达式
ICar car3 = () -> {System.out.println("Drive Audi");};
// ()代表的就是方法,只是匿名的。因为接口只有一个方法所以可以反推出方法名
// 类似Java7中的泛型 List<String> list = new ArrayList<>(); Java可以推断出ArrayList的泛型。
car3.drive();
// 4.无参无返回且只有一行实现时可以去掉{}让Lambda更简洁
ICar car4 = () -> System.out.println("Drive Ferrari");
car4.drive();
// 去查看编译后的class文件 大家可以发现 使用传统方式或匿名内部类都会生成额外的class文件,而Lambda不会
}
}
interface ICar {
void drive();
}
class IcarImpl implements ICar{
@Override
public void drive() {
System.out.println("Drive Benz");
}
}