一、lambda表达式
1.1 介绍
(1)what-->表现形式
(Integer a1, Integera2)->{Integer.compare(a1,a2)}
(Integer a1, Integera2):lambda形参列表 ,相当于接口中抽象方法形参列表
-> : lambda操作符
{Integer.compare(a1,a2)}:lambda方法体,相当于接口中抽象方法的实现方法体
(2)why-->labmda表达式目的:简化代码。Java8 中引入 Lambda 表达式,使原本需要用匿名类实现接口来传递行为,现在通过 Lambda 可以更直观的表达。
(3)how-->labmda表达式本质:接口的匿名实现类(即:lambda表达式必须依赖于函数式接口)
1.2 lambda形参列表
(1)形参类型可以省略,类型推断可以知道类型;
(2)形参个数只有一个时,()可以省略;
1.3 lambda方法体
(1)方法体仅有一行时,{}可省略,且return关键字可省略
(2)接口须为函数式接口(lambda表达式一定依赖函数式接口)
1.4 例子
package com.fupng3.newpack;
import org.junit.Test;
import java.util.Comparator;
public class NewTest {
@Test
public void test1() {
Comparator<Integer> a3=(Integer a1, Integer a2)->{
return Integer.compare(a1,a2);
};
System.out.println(a3.compare(12,20));
}
/**
* test1简化后的写法
*/
@Test
public void test2() {
Comparator<Integer> a3=(a1, a2)->Integer.compare(a1,a2);
System.out.println(a3.compare(50,20));
}
}