本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于lambda表达式的相关问题,lambda表达式是jdk8开始后的一种新语法形式,能够简化匿名内部类的代码写法,下面一起来看一下,希望对大家有帮助。

推荐学习:《java视频教程》
Lambda表达式是JDK8开始后的一种新语法形式
作用:简化匿名内部类的代码写法
立即学习“Java免费学习笔记(深入)”;
格式:
(匿名内部类被重写方法的形参列表)->{
被重写方法的方法体代码
}
注:->是语法形式,无实际意义首先我们先定义一个抽象类,通过匿名内部类重写其方法,再对其进行简化,比较二者之间有何变化:
使用Lambda表达式之前:
public static void main (String[] args){
People p = new People(){
@Override
public void run(){
System.out.println("小学生跑的很慢");
}
};
p.run();
}
abstract class People{
public abstract void run();
}使用Lambda表达式之后:
People p = ()->{
System.out.println("小学生跑的很慢");
};
//会出现报错会出现报错,这是为什么呢?原因在于前面对于Lambda表达式的定义并不清晰,Lambda表达式并不能简化所有匿名内部类,其只能简化函数式接口匿名内部类的写法形式,且接口中有且仅有一个抽象方法,通常,我们会再接口上加上一个@Functionalinterface注解,标记该接口必须是满足函数式接口。
真正意义上通过Lambda表达式简化:
@FunctionalInterface//加上这个注解必须是函数式接口,且只有一个抽象方法
interface People{
void run();
}
//简化之前的匿名内部类
People p = new People(){
@Override
public void run(){
System.out.println("小学生跑的很慢!");
}
};
//简化之后
People p = () -> {
System.out.println("小学生跑的很慢!");
};另外,也可以将其作为参数代入方法中去使用:
//在原来的基础上定义一个pk方法
public static void pk(People p){
System.out.println("跑步情况如何:")
p.run();
}
//不使用Lambda的情况下:
pk(p);//需要在定义匿名内部类之后,将p代入;
//使用Lambda的情况:
People p = () -> {
System.out.println("小学生跑的很慢!");
};
pk(() -> {
System.out.println("小学生跑的很慢!");
});
//由于等号右边即是People创建的对象p,因此可以可以直接将其代入Lambda的好处: Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。
在之前的学习过程中,我们学习过了Arrays的相关知识,其中有一个sort方法(可以将数组升序或降序排列),它其实也是接口类,并且只有一个抽象方法:
//精简之前:
Arrays.sort(grade,new Comparator<Integer>(){
@Override
public int compare(Integer o1,Integer o2){
return o2 -o1;
}
});
//精简之后:
Arrays.sort(grade,(Integer o1,Integer o2) -> {
return o2 -o1;
});//参考前面的实战例子
Arrays.sort(grade,(Integer o1,Integer o2) -> {
return o2 -o1;
});
//省略参数类型之后
Arrays.sort(grade,( o1, o2){
return o2 -o1;
});//简单引用一个单个参数的例子,不需要了解其具体含义
btn.addActionListener((ActionEvent e) -> {
System.out.println("我是简单的例子。");
});
//简化之后:
btn.addActionListener( e -> {
System.out.println("我是简单的例子。");
});//参照上一条规则的例子
btn.addActionListener( e -> {
System.out.println("我是简单的例子。");
});
//简化之后:
btn.addActionListener( e -> System.out.println("我是简单的例子。") );//参照第一条规则的代码
Arrays.sort(grade,(Integer o1,Integer o2) -> {
return o2 -o1;
});
//简化之后:
Arrays.sort(grade,( o1, o2)-> o2 -o1);推荐学习:《java视频教程》
以上就是怎么理解Java中的lambda表达式的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号