java中lambda用法,java lambda表达式
什么是lambda表达式?
Lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。
推荐java相关视频教程:java学习视频
例如:
类操作实现ActionListener{
@覆盖
public void action performed(action event e){
System.out.println(now time是 new Date());
Toolkit.getDefaultToolkit()。beep();
}
}
公共类Main{
公共静态void main(String[] args){
动作a=新动作();
定时器timer=新定时器(2000,a);
timer . start();
joptionpane . showmessagedialog(null,是否退出?);
//此窗口用于防止主线程在执行后直接结束。
}
}这段代码中action类的A对象其实只是作为代码段传递给Timer的构造函数。因为java是一种基于面向对象思想的语言,没有函数调用,没有代码段传递,所以需要的代码必须封装在一个类中,即上面的action类。有了lambda表达式,代码可以更简洁。
以上用表示如下:
公共类Main{
公共静态void main(String[] args){
Timer timer=新计时器(2000,(动作事件e)-{
System.out.println(现在时间是 new Date());
Toolkit.getDefaultToolkit()。beep();
});
timer . start();
//结束
}
}如果使用lambda表达式,代码可以非常简洁吗?如果E的类型可以从下面推导出来,那么参数类型可以省略。如果只有一个参数,括号也可以省略,如下所示:
电子邮件
System.out.println("现在时间是" new Date());
Toolkit.getDefaultToolkit()。beep();
}这个lambda表达式可以等价于:
ActionListener al=e-{
System.out.println("现在时间是" new Date());
Toolkit.getDefaultToolkit()。beep();
}然后把al扔进定时器构造函数里。
作为接口,ActionListener只有一个抽象方法,这是作为函数接口必须满足的条件。函数接口可以写成lambda表达式。
实现另一个按长度码排序的字符串数组,很好理解:
公共类Main{
公共静态void main(String[] args){
String[] con=new String[]{apple , cat , bannane , foot , do };
Arrays.sort(con,(str1,str 2)-str 1 . length()-str 2 . length());
//这里的第一个实现因为直接返回值,所以没有加 { 和 } ,所以不需要加;上下文可以推断这是一个字符串参数,
//所以不需要添加参数类型
ComparatorString compare=(str1,str 2)-S1 . length()-S2 . length();
Arrays.sort(con,compare);//对于第二种实现,也可以编写一个类来实现Comparator中的compare方法。
//例如:
com com 1=new com();
arrays . sort(con . com 1);//它的本质是传递一段代码
}
类com实现CompartorString{
@覆盖
public void compare(String str1,String str2){
返回str 1 . length()-str 2 . length();
}
}
}本文通过java快速入门专栏详细介绍java中的lambda表达式。欢迎大家一起学习!以上是java中Lambda表达式的详细介绍。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。