Lambda 表达式简介
0.预备知识
函数式接口:只包含一个抽象方法的接口。
内部类:静态、成员内部类
局部内部类
匿名内部类
1.代码
1 /** 2 * 函数式编程: 3 * lambda表达式前提: 4 * 必须是函数式接口。 5 */ 6 //1.定义一个函数接口 7 interface GetFx{ 8 void getFx(int x); 9 } 10 //2.0 外部类实现 11 class Fx1 implements GetFx{ 12 @Override 13 public void getFx(int x){ 14 System.out.println("f(" + x + ")=" + Math.sin(x)); 15 } 16 } 17 public class LambdaDemo { 18 //2.1 静态成员内部类实现 19 static class Fx2 implements GetFx{ 20 @Override 21 public void getFx(int x) { 22 System.out.println("f(" + x + ")=" + Math.cos(x)); 23 } 24 } 25 public static void main(String[] args) { 26 GetFx fx; 27 fx = new Fx2(); 28 fx.getFx(1); 29 30 //2.2 局部内部类实现 31 class Fx3 implements GetFx{ 32 @Override 33 public void getFx(int x) { 34 System.out.println("f(" + x + ")=" + Math.abs(x)); 35 } 36 } 37 fx = new Fx3(); 38 fx.getFx(1); 39 40 //2.3 匿名内部类实现 41 fx = new GetFx() { 42 @Override 43 public void getFx(int x) { 44 System.out.println("f(" + x + ")=" + Math.sqrt(x)); 45 } 46 }; 47 fx.getFx(1); 48 49 //3.0 lambda简化 50 fx = (int a)->{ 51 System.out.println("1:"+a); 52 }; 53 fx.getFx(1); 54 55 //3.1 简化参数类型(多参数要简化都简化) 56 fx = (a)->{ 57 System.out.println("2:"+a); 58 }; 59 fx.getFx(1); 60 61 //3.2 简化括号(单参数,多参数必须加括号) 62 fx = a->{ 63 System.out.println("3:"+a); 64 }; 65 fx.getFx(1); 66 67 //3.3 简化花括号(只适用单行代码) 68 fx = a->System.out.println("4:"+a); 69 fx.getFx(1); 70 } 71 }
以上从 外部类-->静态内部类-->局部内部类-->匿名内部类-->lambda表达式 展示了lambda表达式的简化过程。

浙公网安备 33010602011771号