Lambda表达式的使用前提
1.有一个接口。
2.接口中有且仅有一个抽象方法。
练习描述:
无参无返回值抽象方法的练习
操作步骤:
定义一个接口(Eatable),里面定义一个抽象方法:void eat();
定义一个测试类(EatableDemo),在测试类中提供两个方法,
一个方法是:useEatable(Eatable e) 一个方法是主方法,
在主方法中调用useEatable方法。
示例代码:
Lambda表达式练习2
练习描述:
有参数无返回值抽象方法的练习
操作步骤:
1.定义一个接口(Flyable),里面定义一个抽象方法:void fly(String s);
2. 定义一个测试类(FlyableDemo),在测试类中提供两个方法 一个方法是:
useFlyable(Flyable f) 一个方法是主方法。
3. 在主方法中调用useFlyable方法。
示例代码:
Lambda表达式练习3
练习描述:
有参数有返回值抽象方法的练习
操作步骤:
1.定义一个接口(Addable),里面定义一个抽象方法:int add(int x,int y);
2.定义一个测试类(AddableDemo),在测试类中提供两个方法
2.1 一个方法是:useAddable(Addable a)
2.2 一个方法是主方法,在主方法中调用useAddable方法
示例代码:
Lambda表达式的省略模式
省略的规则:
1.参数类型可以省略,但是有多个参数的情况下,不能只省略一个。
2.如果参数有且仅有一个,那么小括号可以省略。
3.如果代码块的语句只有一条,可以省略大括号和分号,和 return关键字。
代码演示:
Lambda表达式的使用前提【理解】
1.使用Lambda表达式必须要有接口
2.并且接口中有且仅有一个抽象方法
Lambda表达式和匿名内部类的区别【理解】
所需类型不同
匿名内部类:可以是接口,也可以是抽象类,还可以是具体类
Lambda表达式:只能是接口
使用限制不同
1.如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类。
2.如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式
实现原理不同
1.匿名内部类:编译之后,产生一个单独的.class字节码文件。
2.Lambda表达式:编译之后,没有一个单独的.class字节码文件。对应的字节码会在运行的时候动态生成。