/*
Lambda表达式的出现的原因
一个接口内部只有一个方法时,有以下几种方式调用该接口
1.需要先创建该接口的实现类,如下面的(2)
2.创建一个静态内部类,如下面的(3)
3.创建一个局部内部类,如下面的(4)
4.创建一个匿名内部类,如下面的(5)
5.Lambda表达式,如下面的(6)
有以上几种情况的代码量可以看出,Lambda表达式的优点,
1.简化了代码,使代码更整洁清晰
2.简化了内部类的使用
3.除去多余的代码块,只保留核心的代码块
*/
1 package com.landa.test;
2
3 public class Lambda1 {
4 public static void main(String[] args) {
5 Inter inter = new InterImpl();
6 inter.test();
7
8 inter = new InterImpl2();
9 inter.test();
10
11 // 4.局部内部类
12 class InterImpl3 implements Inter{
13 @Override
14 public void test() {
15 System.out.println("Inter接口_局部内部类");
16 }
17 }
18 inter = new InterImpl3();
19 inter.test();
20
21 // 5.匿名内部类
22 inter = new Inter(){
23 @Override
24 public void test() {
25 System.out.println("Inter接口_匿名内部类");
26 }
27 };
28 inter.test();
29
30 // 6.Lambda表达式
31 inter = () -> System.out.println("Inter接口_Lambda表达式");
32 inter.test();
33 }
34
35 // 3.创建静态内部类
36 static class InterImpl2 implements Inter{
37 @Override
38 public void test() {
39 System.out.println("Inter接口_静态内部类");
40 }
41 }
42 }
43
44 // 1.定义一个接口
45 interface Inter {
46 // 定义一个方法
47 void test();
48 }
49 // 2.定义接口的实现类
50 class InterImpl implements Inter{
51
52 @Override
53 public void test() {
54 System.out.println("Inter接口的实现类");
55 }
56 }
/*
Lambda表达式只有一行代码的情况才能去除花括号,如果有多行则需要使用代码块包裹
多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号
*/
1 package com.landa.test;
2
3 public class Lambda2 {
4 public static void main(String[] args) {
5 // 1.Lambda表达式
6 Love love = (int a) ->{
7 System.out.println("I Love You,"+a);
8 };
9 love.love(520);
10
11 // 简化Lambda表达式的几种方式
12 // 简化1:简化参数类型
13 love = (a) ->{
14 System.out.println("I Love You,"+a);
15 };
16 love.love(521);
17
18 // 简化2:去除括号
19 love = a ->{
20 System.out.println("I Love You,"+a);
21 };
22 love.love(1314);
23
24 // 简化3:去除花括号,这种只适合有一行代码的场合
25 love = a -> System.out.println("I Love You,"+a);
26 love.love(1111);
27
28 }
29 }
30
31 interface Love{
32 void love(int a);
33 }