File size: 1,268 Bytes
0284885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package Lambda_package;

public class Lambda_demo2 {
    public static void main(String[] args) {
        /*
        Lambda表达式的注意点:
            1、Lambda表达式可以用来简化匿名内部类的书写
            2、Lambda表达式只能简化函数式接口的匿名内部类的写法
            3、函数式接口:
                有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解
         */

        //1、利用匿名内部类的形式去调用下面的方法
        //调用一个方法的时候,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象
        //如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写

        method(new Swim() {
            @Override
            public void swimming() {
                System.out.println("正在游泳~");
            }
        });

        //2、利用Lambda表达式进行改写
        method(() -> {
                    System.out.println("正在游泳~");
                }
        );
    }

    public static void method(Swim s) {
        s.swimming();
    }
}

@FunctionalInterface
interface Swim {
    public abstract void swimming();
}