Java中Lambda表达式如何使用
创始人
2024-12-22 22:21:31
0次

一 点睛

Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(函数式接口)的实例。

Lambda表达式主要作用就是代替匿名内部类的繁琐语法。

它由三部分组成:

形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。  箭头(->),必须通过英文等号和大于符号组成。  代码块。如果代码块只有包含一条语句,Lambda表达式允许省略代码块的花括号,如果省略了代码块的花括号,这条语句不要用花括号表示语句结束。Lambda代码块只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一条省略了return的语句,Lambda表达式会自动返回这条语句的值。

二 用匿名内部类实现命令模式

1 代码

Command接口

public interface Command{  // 接口里定义的process()方法用于封装“处理行为”  void process(int[] target);}

ProcessArray类

public class ProcessArray {  public ProcessArray() {  }  public void process(int[] target, Command cmd) {    cmd.process(target);  }}

CommandTest类

public class CommandTest {  public CommandTest() {  }  public static void main(String[] args) {    ProcessArray pa = new ProcessArray();    int[] array = new int[]{3, -4, 6, 4};    pa.process(array, new Command() {      public void process(int[] target) {        int sum = 0;        int[] var3 = target;        int var4 = target.length;        for(int var5 = 0; var5 < var4; ++var5) {          int tmp = var3[var5];          sum += tmp;        }        System.out.println("数组元素的总和是:" + sum);      }    });  }}

2 运行

数组元素的总和是:9

三 用Lambda表达式实现命令模式

1 代码

public class CommandTest2{  public static void main(String[] args)  {   ProcessArray pa = new ProcessArray();   int[] array = {3, -4, 6, 4};   // 处理数组,具体处理行为取决于匿名内部类   pa.process(array , (int[] target)->{      int sum = 0;      for (int tmp : target )      {        sum += tmp;      }      System.out.println("数组元素的总和是:" + sum);     });  }}

2 运行

数组元素的总和是:9

四 比较

Lambda表达式与匿名内部类比较,不需要new XXX(){}这种繁琐的代码,不需要指出重写方法名字,不需要给出重写方法的返回值类型,只要给出重写的方法括号以及括号里的形参列表即可。

Lambda表达式的代码块会代替实现方法的方法体,Lambda表达式就相对于一个匿名方法。

五 Lambda表达式的简化写法

1 代码

interface Eatable{  void taste();}interface Flyable{  void fly(String weather);}interface Addable{  int add(int a , int b);}public class LambdaQs{  // 调用该方法需要Eatable对象  public void eat(Eatable e)  {   System.out.println(e);   e.taste();  }  // 调用该方法需要Flyable对象  public void drive(Flyable f)  {   System.out.println("我正在驾驶:" + f);   f.fly("【碧空如洗的晴日】");  }  // 调用该方法需要Addable对象  public void test(Addable add)  {   System.out.println("5与3的和为:" + add.add(5, 3));  }  public static void main(String[] args)  {   LambdaQs lq = new LambdaQs();   // Lambda表达式的代码块只有一条语句,可以省略花括号。   lq.eat(()-> System.out.println("苹果的味道不错!"));   // Lambda表达式的形参列表只有一个形参,省略圆括号   lq.drive(weather ->   {     System.out.println("今天天气是:" + weather);     System.out.println("直升机飞行平稳");   });   // Lambda表达式的代码块只有一条语句,省略花括号   // 代码块中只有一条语句,即使该表达式需要返回值,也可以省略return关键字。   lq.test((a , b)->a + b);  }}

2 运行

LambdaQs$$Lambda$1/1078694789@3d075dc0苹果的味道不错!我正在驾驶:LambdaQs$$Lambda$2/1149319664@7cca494b今天天气是:【碧空如洗的晴日】直升机飞行平稳5与3的和为:8

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...