Java Lambda表达式入门示例

网友投稿 246 2022-12-26


Java Lambda表达式入门示例

本文实例讲述了java Lambda表达式。分享给大家供大家参考,具体如下:

一 点睛

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 += thttp://mp;

}

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

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java Lambda表达式的方法引用和构造器引用实例分析
下一篇:主机音频接口测试工具在哪(主机音频接口测试工具在哪里)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~