Lambda标准格式与Lambda表达式的无参数无返回值的练习
Lambda标准格式
匿名内部类的好处与弊端
一方面,匿名内部类可以帮我们省去实现类的定义;另一方面,匿名内部类的语法――确实太复杂了!
语义分析
仔细分析该代码中的语义,Runnable接口只有一个run方法的定义︰
public abstract void run( );
即制定了一种做事情的方案(其实就是一个函数)∶
无参数:不需要任何条件即可执行该方案。
无返回值:该方案不产生任何结果。
代码块(方法体)︰该方案的具体执行步骤。
同样的语义体现在Lambda语法中,要更加简单∶
()-> system.out .println("多线程任务执行!")
前面的一对小括号即run方法的参数(无),代表不需要任何条件;
中间的一个箭头代表将前面的参数传递给后面的代码﹔
后面的输出语句即业务逻辑代码。
Lambda标准格式
Lambda省去面向对象的条条框框,格式由3个部分组成∶。
一些参数
一个箭头
一段代码
Lambda表达式的标准格式为︰
(参数类型参数名称)->{代码语句}
前面的一对小括号即run方法的参数(无),
代表不需要任何条件;
中间的一个箭头代表将前面的参数传递给后面的代码﹔
后面的输出语句即业务逻辑代码。
使用Lambda标准格式(无参无返回)
题目
给定一个厨子Cook 接口,内含唯壬的抽象方法makeFood,且无参数、无返回值。如下︰
//接口 public interface Eatable { void eat(); }
实现类:
public class EatableImpl implements Eatable { @Override public void eat() { System.out.println("在干嘛?"); } }
测试类:
public class EatableDemo { public static void main(String[] args) { 方式1 在主方法中调用useEatable方法 Eatable e = new EatableImpl(); useEatable(e); 方式2 匿名内部类 useEatable(new EatableImpl(){ @Override public void eat() { System.out.println("多喝水"); } }); 方式3 Lambda 表达式 useEatable(() -> { System.out.println("多吃饭"); }); } public static void useEatable(Eatable e) { e.eat(); } }