Lamaba表达式是Java8提供的新特性之一,在Java 8里面,所有的Lambda的类型都是一个接口,而Lambda表达式本身,也就是”那段代码“,需要是这个接口的实现。这是我认为理解Lambda的一个关键所在,简而言之就是,Lambda表达式本身就是一个接口的实现。
public class TestLamaba {
public static void main(String[] args) {
//如果只是单纯的通过lamaba表达式
Lamabasevice lamabasevice = ()-> System.out.println("adad");
}
interface Lamabasevice{
public int getNum(int a);
}
}
这就是一个最简单的示例,lamaba表达式实际上就是一个接口的实现类,类似于我创建了一个接口LamadaService,然后Lamada表达式实现了该service中的方法,通过传递参数做到实现类中的事情,讲道理,很像controller-service-serviceImpl中的serviceImpl,实现接口,进而实现接口中的方法,如果你的借口中只有一个方法,可以使用lamada表达式,可以大大减少冗余代码。
public static void main(String[] args) {
//如果只是单纯的通过lamaba表达式
//Lamabasevice lamabasevice = ()-> System.out.println("adad");
//此处我理解的是使用lamaba表达式起到实现类的作用
Lamabasevice lamabasevice =(a1,a2) -> a1+a2;
System.out.println(lamabasevice.getNums(1,2));
}
interface Lamadasevice{
//public int getNum(int a);
public int getNums(int a,int b);
}
这里体现的是两个参数的情况,通过传递的两个参数,实现了参数间的一个加法运算,最后输出结果。
注意:此处我采用的是简写的形式,如果需要运用到返回值的形式,那么这边需要用return进行返回,同时需要用大括号进行包裹,具体写法如下:
Lamabasevice lamabasevice =(a1,a2) ->{return a1+a2;};
System.out.println(lamabasevice.getNums(1,2));
是不是很熟悉了,其实就是简化我们代码的冗余程度,顺便提升下我们编写代码的优雅风格。
lamaba表达式另外一个使用场景就是在集合的遍历之中进行使用,
ArrayList<Integer> list = new ArrayList<>();
for (int i=0;i<5;i++){
list.add(i);
}
list.forEach(i-> System.out.println(i));
运用foreach进行遍历,使用i进行输出就可以遍历输出到控制台,到具体的场景中使用的就可以比较便捷。
lamdba表达式的参数列表,接口方法的参数 -> 接口方法的实现
在方法内部声明,在使用的时候调用