lambda表达式,及lambda简化过程

lambda表达式(jdk8特性)

1.为什么要用lambda表达式

原因:因为我们有时候需要用到很多类,但是,这些类我们只用一次或者两次,所以我们用匿名内部类,但是匿名内部类多了还是很麻烦,所以用lambda表达式再次简化这种简单类

让代码更加简洁,避免很多无意义的语句

函数式接口的定义?

lambda表达式使用的前提?

实现一个接口,接口只有一个方法。

lambda的简化顺序 :外部类->静态内部类->局部内部类->匿名内部类->lambda

interface Person{
    void say();
}
class Student1 implements Person{//第一个,一个外部的类,比较麻烦,代码也简单
    @Override
    public void say() {
        System.out.println("学生1说了一句话");
    }
}
public class LambdaTest {
    static class Student2 implements Person{//第2个,静态内部类
        @Override
        public void say() {
            System.out.println("学生2说了一句话");
        }
    }
    public static void main(String[] args) {
        Person s1 = new Student1();
        s1.say();
        Person s2 = new Student2();
        s2.say();
        class Student3 implements Person{//第3个,局部内部类
            @Override
            public void say() {
                System.out.println("学生3说了一句话");
            }
        }
        Person s3 = new Student3();
        s3.say();
        Person s4 = new Person() {//匿名内部类,没有类的名称,必须借助接口或者父类
            @Override
            public void say() {
                System.out.println("学生4说了一句话");
            }
        };
        s4.say();
        Person s5 = ()->{//lambda方法
            System.out.println("学生5说了一句话");
        };
        s5.say();
    }
}

lambda格式:怎么样简化成极限?一句?怎么简化?

(参数列表)->{//参数列表可以继续省掉类型声明,一个形参可以省略括号,方法体只有一句可以省略{}
	方法体
}
Pet pet1 = (String food)-> {
            System.out.println(food);
};
Pet pet2 = (food)-> {//两个参数的时候不能省略()
    System.out.println(food);
};
Pet pet3 = food-> {
    System.out.println(food);//方法体多句话的时候不能省略这句话
};
Pet pet4 = food->System.out.println(food);

Runnable接口,就一个run()方法,可以配合lambda

原文地址:https://www.cnblogs.com/li33/p/12715226.html