概述:
今天推荐一篇!Java1.8的新特性之lambda表达式,它非常的方便,可以用来简化匿名内部类哦。能够以更清晰、直观的方式表达代码的逻辑。极大的简化了代码的数量。⌨️⌨️⌨️
不会匿名内部类的小伙伴可以博主下面这篇文章哦:
Java匿名内部类https://blog.csdn.net/ouhexie/article/details/142615823?spm=1001.2014.3001.5501
函数式编程
函数式编程(Functional programming)是一种思想特点。
函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做。
而我们要学习的Lambda表达式就是函数式思想的体现。
Lambda表达式的标准格式
Lambda表达式是JDK 8开始后的一种新语法形式
使用前提
必须是接口的匿名内部类,如果是接口那只能有一个抽象方法
格式:
([参数列表]) ->{
}
-
([参数列表]):对应着方法的形参
-
->:固定格式
-
{}:对应着方法的方法体
代码案例:
public class LambdaDemo {
public static void main(String[] args) {
//1.利用匿名内部类的形式去调用下面的方法
//调用一个方法的时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
//如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写
method(new Swim() {
@Override
public void swimming() {
System.out.println("正在游泳~~~");
}
});
//2.利用lambda表达式进行改写
method(() -> {
System.out.println("正在游泳~~~");
});
}
/**
* 调用游泳接口实现类的swimming方法
*
* @param s 游泳接口实现类
*/
public static void method(Swim s) {
s.swimming();
}
}
/**
* 游泳接口
*/
interface Swim {
public abstract void swimming();
}
注意点
-
Lambda表达式可以用来简化匿名内部类的书写
-
Lambda表达式只能简化函数式接口的匿名内部类的写法
-
函数式接口:有且只有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解
Lambda的好处
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。
Lambda表达式的省略写法
省略核心:
可推导,可省略
lambda的省略规则:
-
参数类型可以省略不写。
-
如果只有一个参数,参数类型可以省略,同时()也可以省略。
-
如果Lambda表达式的方法体只有一行,大括号、分号、return可以省略不写,需要同时省略。
代码案例:
public class LambdaDemoOmit {
public static void main(String[] args) {
//初识lambda表达式
Integer[] arr = {2, 3, 1, 5, 6, 7, 8, 4, 9};
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
//lambda完整格式
Arrays.sort(arr, (Integer o1, Integer o2) -> {
return o1 - o2;
});
//lambda省略写法
Arrays.sort(arr, (o1, o2) -> o1 - o2);
System.out.println(Arrays.toString(arr));
}
}
欧了,到这里我应该解释的差不多啦,我是南极,大胆做自己,活出精彩的人生
标签:省略,接口,匿名,Java,lambda,public,表达式,Lambda From: https://blog.csdn.net/ouhexie/article/details/142616137