Java的Lambda表达式
Java中的Lambda表达式
为了方便地创建实现了函数式接口的类的实例,这是一种语法。
换句话说,这是一种同时进行类声明和实例生成的语法。
在Java的Lambda表达式中,与之相关的是函数式接口,而这个函数式接口只包含一个抽象方法。
重点在于只需要一个选项。
从普通的类到Lambda表达式。
我根据这个参考学习了一下。
第一个阶段(内部类)
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
class ComparatorImpl implements Comparator<String> {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
Comparator<String> c = new ComparatorImpl();
System.out.println(c.compare("ABC", "DEF"));
}
}
第二阶段(匿名类)
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
/*
class ComparatorImpl implements Comparator<String> {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
*/
Comparator<String> c = new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
};
System.out.println(c.compare("ABC", "DEF"));
}
}
Comparator<String> c = new ComparatorImpl();
右边的表达式为 new Comparator(),并在{}内写入表达式。
完成形的Lambda表达式
-
- 删除右边的Comparator()。
-
- 删除抽象方法compare的public int。
-
- 删除抽象方法compare。
-
- 删除抽象方法参数类型String。
-
- 删除抽象方法的返回。
-
- 删除new Comparator()。
- 删除{和},将抽象方法的参数与处理部分用->连接起来。
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
Comparator<String> c = (s1, s2) -> s1.compareTo(s2);
System.out.println(c.compare("ABC", "DEF"));
}
}
变得相当简单了。
通过只使用一个抽象方法,可以省略参数和返回值的类型声明。