Lambda简介
Lambda是JDK8之后的一种新的语法形式,其目的是简化匿名内部类的代码写法
简化格式
(匿名内部类被重写方法的形参列表)->{被重写的方法体代码}
注意事项
Lambda只能简化函数式接口的匿名内部类的写法
函数式接口:一个接口,并且接口里有且仅有一个抽象方法的形式
在Lambda基础上的省略写法
参数类型的可以省略不写
如果只有一个参数,在省略参数类型的同时,可以省略()
如果方法体代码只有一行,可以省略{},同时去掉表达式后的;
如果这一行的代码为return语句,则return必须省略不写
举几个例子
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.getId()-o1.getId();
}
});
//简化
Arrays.sort(students,
(Student o1, Student o2) -> {
return o2.getId() - o1.getId();
}
);
//再简化
Arrays.sort(students, (o1, o2) -> o2.getId() - o1.getId());
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("点击");
}
});
//简化
jButton.addActionListener( e -> System.out.println("点击"));
animal anima=new animal() {
@Override
public void run() {
System.out.println("你跑啥");
}
};
//简化
animal anima1=()-> System.out.println("你跑啥");
这个简化初看比较的难以理解,但是多用几遍,就会发现它的简洁,让你几行的代码,用一行完成。但是如果用的是IDEA这种有自动补全代码功能的编译器,这种简化反倒是有点画蛇添足了。