简介:Lambda表达式是于jdk1.8新出的简化语法,可以代替匿名内部类的实现.
前提:目标只能有一个需要实现的方法,不能多个,也就是所谓的目标必须是函数式接口.
Lambda的优点避免内部类定义过多使代码看上去更加简洁省略一些无意义代码,指向核心
Lambda表达式实现基本语法:
接口类型 接口名称 =() -> {重写方法的代码段};
示例一(方法无返回值):
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); }
作者如果有错误和不当的地方,还请大家多多指教。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)