前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java1.8 -- Lambda表达式

Java1.8 -- Lambda表达式

作者头像
Java深度编程
发布2020-06-10 15:55:40
4350
发布2020-06-10 15:55:40
举报
文章被收录于专栏:Java深度编程

Lambda表达式

Lambda 表达式,也可称为闭包(注意与js中的闭包不是同一个概念),它允许把函数作为一个方法的参数(函数作为参数传递进方法中),使用 Lambda 表达式可以使代码变的更加简洁紧凑。

语法:
代码语言:javascript
复制
(parameters) -> {expression; }
或:
(parameters) -> expression
或:
parameters -> {expression; }
或:
parameters -> expression;
lambda表达式的重要特征:
  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
    • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
    • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
    • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
Lambda 表达式实例
代码语言:javascript
复制
  public class Java8Test {
  
   interface LambadTest {
      int operation(int a, int b);
   } 
   interface LambadTest02 {
      void sayMessage(String message);
   }
  
   private int operate(int a, int b, LambadTest lambadTest){
      return lambadTest.operation(a, b);
   }
  
   public static void main(String args[]){
      Java8Test tester = new Java8Test();
    
      // 类型声明
      // 省略了new接口名,同时实现方法更加简洁,但只能实现接口的一个方法,有多个方法时不可以这么写
      LambadTest test01 = (int a, int b) -> a + b;
    
      // 不用类型声明(可省略参数类型)
      LambadTest test02 = (a, b) -> a - b;
    
      // 大括号中的返回语句
      LambadTest test03 = (int a, int b) -> { return a * b; };
    
      // 没有大括号及返回语句(可省略大括号)
      LambadTest test04 = (int a, int b) -> a / b;
  
      // 不用括号(当一个参数时可以省略括号)
      LambadTest02 lambadTest02 = message -> System.out.println("Hello " + message);
     
      System.out.println("10 + 5 = " + tester.operate(10, 5, test01));
      System.out.println("10 - 5 = " + tester.operate(10, 5, test02));
      System.out.println("10 x 5 = " + tester.operate(10, 5, test03));
      System.out.println("10 / 5 = " + tester.operate(10, 5, test04));
      lambadTest02.sayMessage("W3CSchool");
   }
 
}

执行以上脚本,输出结果为:

代码语言:javascript
复制
$ javac Java8Tester.java 
$ java Java8Tester
10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello W3CSchool

从上面的列子可以看出Lambda 表达式主要用来定义行内执行的方法类型接口,目的是为了简化代码量,Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。但需要注意的是当接口有多个抽象方法时,不可以使用lambda的方式。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java深度编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lambda表达式
    • 语法:
      • lambda表达式的重要特征:
        • Lambda 表达式实例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档