各位小伙伴们大家好,在之前的文章中小编介绍了使用Lambda表达式来省略匿名内部类当中,一些不必要的代码,这次小编要介绍的是Lambda表达式的省略格式,这种格式下代码更加简单,具体如下:
Lambda表达式是可推导,可省略的,凡是可以根据上下文推导出来的内容都可以省略不写。
对于Lambda表达式,可省略的内容包括以下部分:
1.(参数列表):括号中参数列表的数据类型,可以省略不写
2.(参数略表):括号中的参数如果只有一个,那么类型和()都可以省略
3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号)
注意:要省略{},return,分号必须一起省略
代码如下:
/*给定一个计算器Calculator接口,内含抽象方法calc可以将两个int数字相乘得到值*/
public interface Calculator {
//定义一个计算两个int整数和的方法并返回结果
public abstract int calc(int a,int b);
}
main方法
public class Demo01Calculator {
public static void main(String[] args) {
//使用Lambda省略格式
invokeCalc(110,20,( a, b)->
a*b
);
//使用Lambda表达式简化匿名内部类的书写(未使用省略格式)
// invokeCalc(110,20,(int a,int b)->{
// return a+b;
// });
// }
/*定义一个方法:
参数传递两个int类型的整数
参数传递Calculator接口
方法内部调用Calculator中的方法calc计算两个整数的和*/
public static void invokeCalc(int a,int b,Calculator c) {
int sum=c.calc(a,b);
System.out.println(sum);
}}
接下来小编要简单提一下Lambda表达式的使用前提。
使用Lambda表达式必须具有接口,且要求接口中有且只有一个抽象方法,无论是JDK内置的Runnable、Comparator接口还是自定义的接口,只有接口中的抽象方法存在且唯一时,才可以使用Lambda。使用Lambda必须要有上下文推断,也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才可以使用Lambda作为该接口的实列。有且只有一个抽象方法的接口,被称为“函数式接口”。关于Lambda表达式的省略格式,其实根据上文可以推导出来的一些简单的逻辑关系,就可以在Lambda表达式中省略,还有{}里面的一些代码、分号等。小编就先说到这里,希望这篇文章可以帮到大家,也欢迎各位小伙伴补充和纠错。
图片来自网络,如有侵权,请联系作者删除