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

  介绍

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

<强>一点睛

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

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

它由三部分组成:

<李>

形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。

<李>

箭头(→),必须通过英文等号和大于符号组成。

<李>

代码块。如果代码块只有包含一条语句,λ表达式允许省略代码块的花括号,如果省略了代码块的花括号,这条语句不要用花括号表示语句结束.Lambda代码块只有一条返回语句,甚至可以省略返回关键字.Lambda表达式需要返回值,而它的代码块中仅有一条省略了返回的语句,λ表达式会自动返回这条语句的值。

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

1代码

命令接口

public  interface 命令   {//,才能接口里定义的过程()方法用于封装”处理行”为   void 才能;过程(int[],目标);   }

ProcessArray类

public  class  ProcessArray  {   public 才能;ProcessArray (), {   ,,}   public 才能;void 过程(int[],目标,Command  cmd), {   ,,,cmd.process(目标);   ,,}   }

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(数组,,new 命令(),{   ,,,,,public  void 过程(int[],目标),{   ,,,,,,,int  sum =, 0;   ,,,,,,,int [], var3 =,目标;   ,,,,,,,int  var4 =, target.length;   ,,,,,,,,(int  var5 =, 0;, var5  & lt;, var4;, + + var5), {   ,,,,,,,,,int  tmp =, var3 [var5];   ,,,,,,,,,sum  +=, tmp;   ,,,,,,,}   ,,,,,,,System.out.println(“数组元素的总和是:“,+,总和);   ,,,,,}   ,,,});   ,,}   }

2运行

数组元素的总和是:9

<强>三用λ表达式实现命令模式

1代码

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

2运行

数组元素的总和是:9

<强>四比较

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

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

<强>五λ表达式的简化写法

1代码

interface 可吃的   {   void 才能品味();   }   interface 可以飞行的   {   void 才能飞(String 天气);   }   interface 可增加的   {   int 才能;添加(int  a ,, int  b);   }   public  class  LambdaQs   {//,才能调用该方法需要食物对象   public 才能;void 吃(Eatable  e)   {才能   ,,System.out.println (e);   ,,e.taste ();   ,,}//,才能调用该方法需要适航的对象   public 才能;void 驱动(Flyable  f)   {才能   ,,System.out.println(“我正在驾驶:“,+,f);   ,,f.fly(“【碧空如洗的晴日】“);   ,,}//,才能调用该方法需要可增加的对象   public 才能;void 测试(Addable 添加)   {才能   ,,System.out.println(“5与3的和为:“,+,add.add (5, 3));   ,,}   public 才能;static  void  main (String [], args)   {才能   ,,LambdaQs  lq =, new  LambdaQs ();   ,,//,λ表达式的代码块只有一条语句,可以省略花括号。   ,,lq.eat (()→, System.out.println(“苹果的味道不错!“));   ,,//,λ表达式的形参列表只有一个形参,省略圆括号   ,,lq.drive (weather →   null   null   null   null   null   null   null   null   null

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