Lamda表达式
1.什么是Lamda?
Lamda 是JAV 8 添加的一个新的特性,说白了Lamda 就是一个匿名函数。
为什么要使用Lamda?
使用Lamda表达式可以对一个接口实现非常简洁的实现。
比如说我们要实现一个比较大小的接口:
方式一:接口的实现类来完成此功能。
public class Program {
public static void main(String[] args) {
MyComparator myComparator = new MyComparator();
myComparator.compar(4, 6);
}
}
interface Comparator {
int compar(int a, int b);
}
class MyComparator implements Comparator {
@Override
public int compar(int a,int b) {
return a-b;
}
}
方式二:匿名内部类
public class Program {
public static void main(String[] args) {
Comparator comparator = new Comparator() {
@Override
public int compar(int a, int b) {
return a-b;
}
};
int compar = comparator.compar(4, 6);
System.out.println(compar);
}
}
interface Comparator {
int compar(int a, int b);
}
方式三:Lamda 表达式
public class Program {
public static void main(String[] args) {
Comparator comparator = (a,b)->a-b;
int compar = comparator.compar(4, 6);
System.out.println(compar);
}
}
interface Comparator {
int compar(int a, int b);
}
Lamda对接口的要求是什么?
虽然可以使用Lamda 表达式对某些接口进行简单的实现,但并不是所有的接口都可以用Lamda表达式来实现。要求接口中定义的必须是要实现的抽象方法只能是一个
*JAVA 8 对接口家里一个新的特性:default
*
@FunctionalInterface修饰函数式接口的,接口中的抽象方法只有一个。
如果有多个抽象方法就会报错
2.Lamda基本语法
首先需要注意的是 Lamda 是一个匿名函数那么有以下几个关注点
-
参数列表名
-
方法体
-
返回值类型 (在Lamda 中返回值不用显示的写出)
-
方法名(匿名不用关注)
符号 | 含义 |
---|---|
() | 用来描述参数列表 |
{} | 用来表示方法体 |
-> | Lamda运算符 读作 goes to |
1.无参无返回值
@FunctionalInterface
public interface LamdaNoneReturnNoneParamter {
void test();
}
class imTest{
public static void main(String[] args) {
LamdaNoneReturnNoneParamter lamdaNoneReturnNoneParamter = ()->{
System.out.print("无参无返回值");
} ;
}
}
2.无返回值单个参
@FunctionalInterface
public interface LamdaNoneReturnNoneParamter {