什么是Lambda表达式?,java中lambda用法
这篇文章带给你一些java的知识,主要是关于lambda表达式的知识。Lambda expression是JDK8启动后新的语法形式,可以简化匿名内部类的代码编写。下面就来看看吧,希望对你有帮助。
如何解决写爬虫IP受阻的问题?立即使用。
Lambda概述
Lambda表达式是JDK8启动后的新语法形式。
作用:简化匿名内部类的代码编写
格式:
(匿名内部类的重写方法的参数列表)-{
重写方法的方法体代码
}
注意:——是语法形式,没有实际意义。首先我们定义一个抽象类,通过匿名内部类重写它的方法,然后简化它,比较它们之间的变化:
在使用Lambda表达式之前:
公共静态void main (String[] args){
People p=新人(){
@覆盖
公共无效运行(){
System.out.println(小学生跑得很慢);
}
};
p . run();
}
抽象类人{
公共抽象void run();
}使用Lambda表达式后:
People p=()-{
System.out.println(小学生跑得很慢);
};
//会有错误,会有误差。这是为什么呢?原因是之前对Lambda表达式的定义不明确。Lambda表达式无法简化所有匿名内部类,其只能简化函数式接口匿名内部类的写法形式,且接口中有且仅有一个抽象方法。通常,我们会在接口上添加一个@Functionalinterface注释,以标记接口必须是功能性的。
实际上通过Lambda表达式简化了:
@FunctionalInterface//用这个标注,一定是只有一个抽象方法的函数接口。
界面人员{
空运行();
}
//简化前面的匿名内部类
People p=新人(){
@覆盖
公共无效运行(){
System.out.println(小学生跑得特别慢!);
}
};
//简化后
People p=() - {
System.out.println(小学生跑得特别慢!);
};此外,它还可以用作方法中的参数:
//在原有基础上定义一个pk方法
公共静态无效主键(人员p){
System.out.println(运行情况如何:)
p . run();
}
//不使用Lambda:
PK(p);//定义匿名内部类后需要代入P;
//当使用Lambda时:
People p=() - {
System.out.println(小学生跑得特别慢!);
};
主键(()- {
System.out.println(小学生跑得特别慢!);
});
//由于人创建的对象P在等号的右边,所以可以直接代入
Lambda实战的作用
。在之前的学习过程中,我们学习了数组,有一种排序方法(可以对数组进行升序或降序排序)。它实际上是一个接口类,只有一个抽象方法:
//精简前:
Arrays.sort(grade,new ComparatorInteger(){
@覆盖
public int compare(整数o1,整数o2){
返回O2-O1;
}
});
//精简后:
Arrays.sort(grade,(整数o1,整数o2) - {
返回O2-O1;
});
Lambda表达式省略规则
参数类型可以省略。//参考前面的实际例子。
Arrays.sort(grade,(整数o1,整数o2) - {
返回O2-O1;
});
//省略参数类型后
Arrays.sort(grade,(o1,o2){
返回O2-O1;
});如果只有一个参数,可以省略参数类型,也可以省略()。//简单的引用单个参数的例子,不知道它的具体含义。
BTN . addactionlistener((ActionEvent e)-{
System.out.println(我就是一个简单的例子。);
});
//简化后:
btn.addActionListener( e - {
System.out.println(我就是一个简单的例子。);
});如果Lambda表达式的方法体代码只有一行代码。可以省略花括号和分号。//参考前面规则的例子。
btn.addActionListener( e - {
System.out.println(我就是一个简单的例子。);
});
//简化后:
BTN . addactionlistener(e-system . out . println(我就是一个简单的例子。) );如果Lambda表达式的方法体代码只有一行代码。可以省略花括号,不用写。此时,如果这行代码是return语句,return必须省略,并且;不要写//参考第一条规则的代码
Arrays.sort(grade,(整数o1,整数o2) - {
返回O2-O1;
});
//简化后:
Arrays.sort(grade,(o1,O2)-O2-O1);推荐:《java视频教程》以上是如何理解Java中lambda表达式的细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。