135-1821-9792

Lambda表达式如何在Java项目中使用

本篇文章给大家分享的是有关Lambda表达式如何在Java项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联公司-专业网站定制、快速模板网站建设、高性价比新密网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式新密网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖新密地区。费用合理售后完善,10年实体公司更值得信赖。

一 点睛

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

以上就是Lambda表达式如何在Java项目中使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


网站标题:Lambda表达式如何在Java项目中使用
文章分享:http://kswsj.com/article/gcihcc.html

其他资讯



Copyright © 2009-2022 www.kswsj.com 成都快上网科技有限公司 版权所有 蜀ICP备19037934号