/*
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 }
原文:https://www.cnblogs.com/1123-wyl/p/15082701.html