简介:Lambda表达式是于jdk1.8新出的简化语法,可以代替匿名内部类的实现.
前提:目标只能有一个需要实现的方法,不能多个,也就是所谓的目标必须是函数式接口.
基本语法:
接口类型 接口名称 =() -> {重写方法的代码段};
示例一(方法无返回值):
public class Tang1 { public static void main(String[] args) { //最初始化使用匿名内部类实现接口 new Test(){ @Override public void lambda() { System.out.println("Lambda1"); } }.lambda(); //使用Lambda表达式实现 Test test=() -> { System.out.println("Lambda2"); }; test.lambda(); //使用Lambda表达式(简化) 注意:这个只适用于一句话 Test test1=()->System.out.println("Lambda3"); test1.lambda(); //案例:使用Lambda简化创建线程 new Thread(() -> System.out.println("Lambda4")).start(); //方便理解案例: new Thread(new Runnable() { @Override public void run() { System.out.println("于Lambda4相同"); } }).start(); } } interface Test { void lambda(); }
实例二(方法有返回值):
public class Tang2 { public static void main(String[] args) { //使用未简化Lambda表达式 Test8 test=(a) -> {System.out.println("Lambda"+a);}; test.lambda(1); //使用简化Lambda(简化第一次) test=(a) -> System.out.println("Lambda"+a); test.lambda(2); //使用简化Lambda表达式(简化第二次) 注意:如果式多个参数则需要带上括号 test= a -> System.out.println("Lambda"+a); test.lambda(3); //如果还能简化的化往小伙伴们指出 } } interface Test8{ void lambda(int a); }
作者如果有错误和不当的地方,还请大家多多指教。