IT评测·应用市场-qidao123.com
标题:
Java中的Lambda详细解读
[打印本页]
作者:
科技颠覆者
时间:
2023-4-27 21:06
标题:
Java中的Lambda详细解读
Lambda是JDK1.8新引进的简化代码语法格式,可以替代匿名内部类。
//以下代码对比一下两者写法上的区别
interface Alarm{
void display();
}
public class Lambda{
public static void main(String[] args){
Alarm a=new Alram(){
@Override
public void display(){
System.out.println("我是匿名内部类实现的方法");
}
}
//简化代码
Alram b=()->System.out.println("我是lambda表达式实现的方法");
}
}
复制代码
Lambda语法
接口 变量名=(参数名称以及个数)->{实现方法};
函数式接口:
保证是接口
只能有一个抽象方法(public abstract可缺省)
声明@FunctionalInterface注解 帮助开发人员判定是否满足函数式接口定义 可不写但需要你满足上两条
函数式接口中可以定义常量(public final可缺省)
函数式接口中可以写默认方法 但是Lambda表达式无法访问该方法
//声明该接口为函数式接口
@FunctionalInterface
interface AlarmNoArg{
void display();
}
@FunctionalInterface
interface AlarmOneArg{
String display(String one);
}
@FunctionalInterface
interface AlarmTwoArg{
public final int arg=1;
public abstract int display(int a,int b);
}
interface AlarmThreeArg{
defalut void m1(){
//逻辑
}
void display(int[] arr);
}
public class Example{
public static void main(String[] args){
AlarmNoArg a=()->System.out.prinln("一行代码可以省略{}");
a.display();
AlarmOneArg b=(name)->name;
//一行代码缺省{}情况下 可以直接返回值
b.display("张三");
//两个参数 参数名随便写 符合java变量名规范就行
//返回值不是void 写结构体{}必须写return
AlarmTwoArg c=(a,b)->{return a+b;};
c.display(1,2);
//数组引用
AlarmThreeArg d=(arr)->{
for(int i:arr){
System.out.println(i);
}
};//分号别忘啦
d.display(new int[]{1,2,3,4})
}
}
复制代码
::运算符的使用
保证方法参数数量/顺序/返回值一致 否则编译错误
@FunctionalInterface
interface Lam1{
int sum(int a,int b);
}
interface Lam2{
String get();
}
interface Lam3{
Example create(String name,int age);
}
class Example{
public static int isSum(int m,int n){
return m+n;
}
public String getName(){
return "马齐";
}
public Example1(String name,int age){
this.name=name;
this.age=age;
}
public Example1(){}
public static void main(String[] arg){
//绑定静态方法
Lam1 a=Example::isSum;
a.sum(1,2);
//绑定实例方法
Example obj=new Example();
Lam2 b=obj::getName;
b.get();
//绑定构造方法
Lam3 c=Example::new;
Example e=c.create("张三",21);
}
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4