- 只有一个抽象方法的接口称为函数式接口,需要这种接口的对象时,就可以提供一个lambda表达式。
- lambda表达式实质上是函数式接口的对象。
- lambda表达式就是一个代码块,以及必须传入代码的变量规范。
- 方法引用的本质是lambda表达式,即利用已经实现的方法替换lambda表达式。
import java.util.Comparator;
public class LambdaTest {
public static void main(String[] args) {
Comparator<Integer> comparator1 = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
System.out.println("Comparator");
return o1.compareTo(o2);
}
};
System.out.println(comparator1.compare(1, 2));
InterfaceTest interfaceTest1 = str -> str;
System.out.println(interfaceTest1.returnString("str1"));
Comparator<Integer> comparator2 = Integer::compare;
System.out.println(comparator2.compare(3, 4));
InterfaceTest interfaceTest2 = new ClassTest()::returnString;
System.out.println(interfaceTest2.returnString("str2"));
}
}
@FunctionalInterface
interface InterfaceTest {
String returnString(String str);
}
class ClassTest {
public String returnString(String str) {
System.out.println("ClassTest");
return str;
}
}