lambda表达式就是对匿名方法的进一步简化
1.前提
所以你写lambda的时候就不会纠结重写哪一个方法了,避免了歧义,重写唯一的那一个抽象方法。
2.格式
()->{ }
3.省略规则
4.注意事项
5.匿名内部类和lambda表达式区别
总体来说lambda表达式可以在单个抽象方法的接口情况下作为一种简单的替代,对于复杂的情况还得用匿名内部类
public interface Inter{
void show();
//void show1();
}
abstract class Animal {
public abstract void method();
}
class Student {
public void study(){
System.out.println("爱生活,爱java");
}
}
public class LambdaDemo{
public static void main(String[] args) {
/*//匿名内部类
useInter(new Inter() {
@Override
public void show() {
System.out.println("接口");
}
});
useAnimal(new Animal() {
@Override
public void method() {
System.out.println("抽象类");
}
});
useStudent(new Student(){
@Override
public void study(){
System.out.println("具体类");
}
});*/
//Lambda
useInter(() -> System.out.println("接口"));
//useAnimal(() -> System.out.println("抽象类"));//不可以
//useStudent(() -> System.out.println("具体类"));//不可以
}
private static void useStudent(Student s){
s.study();
}
private static void useAnimal(Animal a){
a.method();
}
private static void useInter(Inter i){
i.show();
}
}
public interface Inter{
void show();
void show1();
}
public class LambdaDemo{
public static void main(String[] args) {
useInter(new Inter() {
@Override
public void show() {
System.out.println("show");//👈只打印这一个show
}
@Override
public void show1() {
System.out.println("show");
}
});
}
private static void useInter(Inter i){
i.show();
}
}