一、lambda:简化代码
lambda: λ 组成:
逗号隔开的参数列表(x,x,x);
箭头符号 ->
方法体 λ代码块
实例:
public class test_lambda { public static void test(){ new Thread(new Runnable() { @Override public void run() { System.out.println("run...."); } }).start(); } public static void main(String[] args) { test(); } }
简单的线程代码。
修改test()函数:
public static void test2(){ new Thread( () ->System.out.println("run....") ).start(); }
运行成功。
注意:为了避免不能区分lambda到底是重写的哪个方法,语法上lambda要求重写的接口、抽象类中有且只能有一个抽象方法。
@FunctionalInterface注解,表明该接口中有且只有一个抽象方法。称之为函数式接口。
即使没有标注@FunctionalInterface,但是只有一个抽象方法,也称之为函数式接口。
特殊情况:如果某个接口中有多个抽象方法,但只有一个抽象方法是新定义的,其他抽象方法和Object中已有的抽象方法重复,那么该接口仍然是函数式接口。
仍是函数式接口。