详解Java8中的Lambda表达式
Lambda是什么
Lambda表达式,也可称为闭包,是java8的新特性,作用是取代大部分内部类,优化java代码结构,让代码变得更加简洁紧凑。
Lambda的基本语法
(expression)->expression或(expression)->{statements;}
Lambda最重要特点
用()->{}代码块替代匿名内部类
//(param)->expression;//(param)->statment;//(param)->{statments};//类型声明 MathOperationaddition=(inta,intb)->a+b; //不用类型声明 MathOperationsubtraction=(a,b)->a-b;
例如:用lambda表达式实现Runable接口
//java8之前 newThread(newRunable(){ @Override publicvoidrun(){ System.out.println("hello"); } }).start(); //java8之后 newThread(()->System.out.println("hello")).start();
代替comparator接口内部类
//java8之前 Comparatorcomparator=newComparator(){ publicintcompare(Personp1,Personp2){ if(p1.getAge()>p2.getAge()) return-1; ..... } } //java8之后 Comparator comparator=(Personp1,Personp2)->{ if(p1.getAge()>p2.getAge()) return-1; ..... }
是不是代码变得清爽了许多
Lambda表达式和匿名类的对比
1、this关键字:匿名类的this关键字指向匿名类,而Lambda表达式的关键字指向包围Lambda表达式的类;
2、编译方式:Java编译器将Lambda表达式编译成类的私有方法,使用了java7的invokedynamic字节码指令来动态绑定这个方法;
最后说一句,Lambda表达式和Java8的新特性Stream()一起使用会更香哦!
以上就是详解Java8中的Lambda表达式的详细内容,更多关于Java8中的Lambda表达式的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。