Lambda 表达式来源于数学, 因为其简洁性,很多开发语言都支持, Java 在版本8 开始引入。

Lamba 表达式是什么?

  • 匿名内部类
  • 接口只能有一个需要被实现的方法

Lamba 表达式作用

  • 代码变得简洁
  • Lamba 表达式可以直接作为参数传递给函数

Lamba 语法

()->{}

  • ()括号 用来描述参数列表
  • {}大括号 用来描述方法体
  • -> 是Lambda 运算符,读作goes to
  1. (parameters) -> expression
  2. (parameters) -> {statements}
  3. (parameters) -> statement
  • 类型声明 可选, 编译器可以自动识别
  • 参数圆括号 可选 , 一个参数可以不需要
  • 大括号 可选 , 一条语句可以不需要
  • 返回关键字 可选 , 只有一个返回值会自动返回

Java Lambda 表达式的写法

接下来从方法返回值和方法参数两个维度来定义接口和方法, 再使用Lambda表达式定义匿名类。汇总如下表:

无返回值 有返回值
无参数 1. NoReturnNoParamI 4. HasReturnNoParamI
单参数 2. NoReturnSingleParamI 5. HasReturnSingleParamI
多参数 3. NoReturnMultiParamI 6. HasReturnMultiParamI

1. 无返回值无参数接口方法

接口定义:

@FunctionalInterface
public interface NoReturnNoParamI {void method();
}
  • @FunctionalInterface 注解用来标识该接口有且只有一个抽象方法

使用Lambda表达式实现接口方法并返回该实现类实例的代码如下:

     NoReturnNoParamI noReturnNoParam = ()->{System.out.println("noReturnNoParam");};noReturnNoParam.method();
  • () 用来描述参数
  • {} 大括号里面是方法体, 如果方法体只有一个语句,也可以省略大括号
noReturnNoParam = ()->System.out.println("noReturnNoParam");

2. 无返回值单个参数接口方法

接口定义如下:

@FunctionalInterface
public interface NoReturnSingleParamI {void method(String param);
}

Lambda 表达式的写法如下:

     NoReturnSingleParamI noReturnSingleParam = (String param)-> System.out.println("noReturnSingleParam,param="+param);noReturnSingleParam.method("Hello");

单个参数可以省略大括号, 也可以省略类型, 可以简写为:
noReturnSingleParam = param-> System.out.println("noReturnSingleParam,param="+param);

3. 无返回值多个参数接口方法

接口定义如下:

@FunctionalInterface
public interface NoReturnSingleParamI {void method(String param);
}

Lambda 表达式写法如下:

     NoReturnMultiParamI noReturnMultiParam = (String param1,String param2) -> System.out.println("noReturnMultiParam,param1="+param1+";param2="+param2);noReturnMultiParam.method("张三","李四");

4. 有返回值无参数接口方法

接口定义如下:

@FunctionalInterface
public interface HasReturnNoParamI {String method();
}

Lambda 表达式

     HasReturnNoParamI hasReturnNoParam = ()-> {System.out.println("noReturnNoParam");return "Success";};String rtn = hasReturnNoParam.method();

5. 有返回值单参数接口方法

接口定义如下:

@FunctionalInterface
public interface HasReturnSingleParamI {String method(String param);
}

Lambda 表达式:

HasReturnSingleParamI hasReturnSingleParam = (String param)-> {System.out.println("hasReturnSingleParam,param="+param);return "Success";};
String rtn = hasReturnSingleParam.method("Hello");

6. 有返回值多参数接口方法

接口定义如下:

@FunctionalInterface
public interface HasReturnMultiParamI {String method(String param1,String param2);
}

Lambda 表达式:

HasReturnMultiParamI hasReturnMultiParam= (String param1,String param2)-> {System.out.println("hasReturnMultiParam,param1="+param1+";param2="+param2);return "Success";};
String rtn = hasReturnMultiParam.method("张三","李四");

本篇代码示例

  • https://gitee.com/xuemingchen/java-ency/tree/master/src/main/java/com/osxm/je/base/lambda

Java Lambda 表达式快速学习相关推荐

  1. Lambda表达式的生动理解以及Java Lambda表达式常见使用场景

    本篇承接上一篇 Java Lambda 表达式快速学习 , 对Lambda 表达式的语法格式进行演化说明, 并对Java 中Lambda表达式的常见使用场景进行说明. Lambda 表达式怎么来的? ...

  2. 深入理解Java Lambda表达式,匿名函数,闭包

    前言 对于Lambda表达式一直是知其然不知其所以然,为了搞清楚什么是Lambda表达式,以及Lambda表达式的用法和作用,本文应运而生当做学习笔记分享出来,欢迎指正交流. 什么是Lambda 让我 ...

  3. Java Lambda表达式入门

    本文转自:http://blog.csdn.net/renfufei... 转载请注明出处 原文链接: Start Using Java Lambda Expressions 下载示例程序 Examp ...

  4. java拉姆达表达式事例,Java Lambda表达式详解和实例

    简介 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体( ...

  5. Java Lambda表达式初探

    前言 本文受启发于Trisha Gee在JavaOne 2016的主题演讲Refactoring to Java 8. Java 8已经发行两年多,但很多人仍然在使用JDK7.对企业来说,技术上谨慎未 ...

  6. 【外文翻译】外国友人写得很不错的Java Lambda表达式入门教程,我终于翻译好给大家啦!!!...

    " 英语原文的链接在最底下的"阅读原文" " 简介 (译者认为: 超过 3 行的逻辑就不适用 Lambda 表达式了.虽然看着很先进,其实 Lambda 表达式 ...

  7. Java进阶(五十五)-Java Lambda表达式入门

    原文链接: Start Using Java Lambda Expressions 下载示例程序 Examples.zip . 简介   (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个 ...

  8. Java Lambda表达式入门 1

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/53930569 文章出自:薛瑄博客 我对Java 8发布非常激动,尤其是lambda ...

  9. Java Lambda表达式的箭头理解总结

    Java Lambda表达式的箭头理解总结 文章目录 Java Lambda表达式的箭头理解总结 一.简单的Lambda的基础知识点: 二.Lambda 表达式示例 1.实现方法没有参数,无返回值的情 ...

最新文章

  1. Yann LeCun:假如没有深度学习,Facebook就是尘埃
  2. Android 四大组件之——Acitivity(一)
  3. 何时该用无服务器,何时该用Kubernetes?
  4. LeetCode 2091. 从数组中移除最大值和最小值(一次遍历)
  5. DOS批处理删除文本文件重复的行
  6. 大兴服务器硬盘回收行情价格,回收服务器 硬盘 内
  7. WINDOWS BAT的命令,双引号位置要注意
  8. uCOS-II的学习笔记(共九期)和例子(共六个)
  9. 如何用Primer6批量设计引物(非全cDNA引物)
  10. 2021年电工(技师)考试报名及电工(技师)模拟考试题
  11. [Vmware卸载] Vmware12卸载
  12. 超实用的!南京南站最新停车指南来了
  13. 基于蚁群算法的MTSP问题
  14. android6.0以上模拟位置状态检测
  15. 计算某年某月某日是星期几(基姆拉尔森计算公式)
  16. HTML基础常识问答(四)
  17. 进度模型方法论,利用“削峰填谷”进行资源优化
  18. 6.5趣味逻辑之委派任务
  19. 法线贴图Shader
  20. nvm介绍及常用命令

热门文章

  1. 浅谈CDQ分治与偏序问题
  2. ORB-SLAM2初步(跟踪模块)
  3. 关于头文件的一道选择题
  4. Linux_异常_01_CentOS7无法ping 百度
  5. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
  6. 【白皮书分享】2021国有企业数字化转型指数与方法路径白皮书.pdf(附下载链接)...
  7. 【白皮书分享】2021年B2B内容营销白皮书.pdf(附下载链接)
  8. 【分享】美图个性化Push AI探索之路(附交流视频和PPT下载链接)
  9. 使用方法_山西硅肥使用方法
  10. vbs连接oracle11,vbs连oracle数据库