Java基础——Lambda表达式
来源:互联网 发布:ubuntu docker 启动 编辑:程序博客网 时间:2024/06/09 17:16
Lambda表达式是Java8的重要更新。Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例。
首先,我们先使用匿名内部类来写一个例子,然后对比Lambda表达式。
先写一个接口:
public interface Command { //接口里定义的process方法用于封装“处理行为” void process(int[] target);}
匿名内部类:
public class CommandTest { public static void main(String[] args){ ProcessArray pa = new ProcessArray(); int[] target = {3,-4,6,4}; //处理数组,具体处理行为取决于匿名内部类 pa.process(target, new Command(){ @Override public void process(int[] target) { // TODO 自动生成的方法存根 int sum = 0; for(int tmp : target){ sum += tmp; } System.out.println("数组元素的总和是:" + sum); } }); }}
Lambda表达式:
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); }); }}
由上面可以看出,Lambda表达式简化创建匿名内部类对象。
Lambda表达式的主要作用就是代替匿名内部类的繁琐语法。它由三部分组成。——形参列表。形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表的圆括号也可以省略。——箭头(->)。必须通过英文中画线和大于符号组成。——代码块。如果代码块只包含一条语句,Lambda表达式允许省略代码块的花括号,那么这条语句就不要用花括号表示语句结束。Lambda代码块中只有一条return语句,甚至可以省略return关键字。Lambda表达式需要返回值,而它的代码块中仅有一条省略了return的语句,Lambda表达式会自动返回这条语句的值。
Lambda表达式的几种简化写法:
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.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); }}
0 0
- Java基础——Lambda表达式
- Java基础-Lambda表达式
- 从Java5基础开始初识Lambda表达式——走进Java Lambda(一)
- java 8 lambda—第二章—lambda表达式
- Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
- Java学习笔记——Lambda表达式
- java 8——Lambda表达式
- java中-> ——lambda表达式
- Java基础学习总结(69)——匿名内部类与Lambda表达式
- Java SE8 Lambda 基础入门---怎么写lambda表达式
- Java SE8 Lambda 基础入门---lambda表达式的类型是什么
- Java SE8 Lambda 基础入门---lambda表达式中的异常处理
- C#委托基础8——lambda表达式
- C#委托基础8——lambda表达式
- Lambda表达式基础篇
- [C#基础]Lambda表达式
- Lambda表达式基础认识
- lambda表达式基础
- 使类能够克隆的步骤
- python 性能分析器 profile
- GPU性能比较
- hdu 2717 Catch That Cow
- DSP前言
- Java基础——Lambda表达式
- python定义类
- 关于配置PHP的错误解决
- 基于负熵(fastICA)的盲源分离
- CODEVS 1690 开关灯
- JMX设置属性
- Linux命令之curl
- linux 共享内存
- Eclipse如何设置注释模板