Lambda表达式

一. 基本结构:

(param1, param2, param3) -> {}

二. 关于函数式接口:

  • 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口.

  • 如果我们在某个接口上声明了FunctionalInterface注解, 那么编译器就会按照函数式接口的定义来要求该接口.

  • 如果某个接口只有一个抽象方法,但我们并没有给该接口声明FunctionalInterface注解, 那么编译器依旧会将该接口看作是函数式接口.

三. FunctionalInterface Java Doc

An informative annotation type used to indicate that an interface
type declaration is intended to be a <i>functional interface</i> as
defined by the Java Language Specification

​ 一种信息注释类型,用于指示接口类型声明是由Java语言规范定义的函数接口

Conceptually, a functional interface has exactly one abstract
method. Since {@linkplain java.lang.reflect.Method#isDefault()
default methods} have an implementation, they are not abstract.  If
an interface declares an abstract method overriding one of the
public methods of {@code java.lang.Object}, that also does
<em>not</em> count toward the interface's abstract method count
since any implementation of the interface will have an
implementation from {@code java.lang.Object} or elsewhere.

​ 从概念上讲,函数接口只有一个抽象方法。因为 reflect 包中的Method下的默认方法有一个实现,

他不是抽象的。如果一个接口声明一个抽象方法重写了对象的一个公共方法,那么它也不计入接口的抽象方法计数。因

为接口的任何实现都将从{java.Lang.Object }或其他地方实现。

Note that instances of functional interfaces can be created with lambda expressions, method references, or constructor references

​ 注意,可以使用lambda表达式、方法引用或构造函数引用创建函数接口的实例。

If a type is annotated with this annotation type, compilers are required to generate an error message unless:
1.The type is an interface type and not an annotation type, enum, or class
2.The annotated type satisfies the requirements of a functional interface.

​如果一种类型被注释为这种注释类型,编译器需要生成一条错误消息,除非:

  1. 类型是接口类型,而不是注释类型、枚举或类
  2. 带注释的类型满足函数式接口的要求。

Java8新特性学习第一天相关推荐

  1. Java8新特性学习笔记

    Java8新特性学习笔记 文章目录 Java8新特性学习笔记 一.接口和日期处理 1.接口增强 1.1.JDK8以前 VS JDK8 1)接口定义: 1.2.默认方法(default) 1)默认方法格 ...

  2. Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)

    目录 ■代码 ■代码运行结果 ■代码说明 ・44行:Stream的.foreach方法ー参数类型:函数式接口 ・82行:Interface中,default方法 ・92行   Stream的.max方 ...

  3. java8新特性学习笔记(Lambda,stream(),filter(),collect(),map())

    文章目录 1.lambda表达式(重点) 1.需求分析 2.Lambda表达式初体验 3.Lambda的语法规则 3.1 Lambda练习1 3.1 Lambda练习2 4.Lambda表达式的原理 ...

  4. Java8新特性学习记录

    前言: Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章, 例如Playing with Java ...

  5. 【转载保存】java8新特性学习

    编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版. 在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java 8--lambd ...

  6. 【CSDN软件工程师能力认证学习精选】 Java8新特性学习-函数式编程(Stream/Function/Optional/Consumer)

    CSDN软件工程师能力认证是由CSDN制定并推出的一个能力认证标准,宗旨是让一流的技术人才凭真才实学进大厂拿高薪,同时为企业节约大量招聘与培养成本,使命是提升高校大学生的技术能力,为行业提供人才储备, ...

  7. java8新特性学习笔记之唠唠“匿名内部类与lambda”

    负一.知道啥是匿名内部类不? 要使用lambda,我觉得你至少得明白匿名内部类是个啥."o -> o.getName"是lambda表达式,"Book::getNa ...

  8. Java8新特性学习(lambda,函数式接口,stream,Optional)

    一. Lambda Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使Jav ...

  9. java8新特性学习笔记链接

    https://blog.csdn.net/yitian_66/article/details/81010434 转载于:https://www.cnblogs.com/wangxuekui/p/10 ...

  10. 【Todo】Java8新特性学习

    参考这篇文章吧: http://blog.csdn.net/vchen_hao/article/details/53301073  还有一个系列 转载于:https://www.cnblogs.com ...

最新文章

  1. Ubuntu下设置电信拨号上网(10.04版)
  2. “放到桌面”的Servlet实现
  3. ERP云端争霸 甲骨文和SAP打对攻 金蝶忙转身用友原地等待
  4. sql 百分数_SQL经典50题笔记
  5. java线程死锁_Java线程死锁–案例研究
  6. 前端学习(1126):递归求数学题
  7. adam算法效果差原因_信电学院本科生提出AI新算法:速度比肩Adam,性能媲美SGD,ICLR领域主席赞不绝口...
  8. Ubuntu安装OpenTSDB
  9. PCB封装下载方法(亲测有效)
  10. matlab坐标轴非均匀分布,matalb——生成离散非均匀随机数
  11. 如何利用TFTP服务器上传文件到真机交换机?可使用SecureCRT和3CDaemon工具
  12. UINO优锘:深度|扒一扒图化资源申请之三生三世那点事儿
  13. presenting view controller Vs presented view controller
  14. CS224W-图神经网络 笔记5.1:Spectral Clustering - 谱聚类基础知识点
  15. 计算机实战项目之 [含论文+辩论PPT+源码等]微信小程序社区疫情防控+后台管理|前后分离VUE[包运行成功
  16. Genymotion 各对应版本
  17. 云效部署应用失败问题排查
  18. TM4C1294使用
  19. 前端React项目部署
  20. 2018年1月27日训练日记

热门文章

  1. intel android 平板,IT百科之英特尔芯平板
  2. 白岩松人生哲学-听后感
  3. 三分钟细数 el-form 表单校验的坑点,前车之鉴,可助你避坑
  4. MATLAB学习笔记(注释超详细)
  5. Android拓展系列(5)--CyanogenMod源码下载和编译(Android ROM定制基础篇)
  6. 【观察】百度搜索开放平台
  7. [锁 Lock] Lock lock = new ReentrantLock()之自增序列号
  8. 大学生必知到的外国典故
  9. 二维数组更改vue,VueX中直接修改数据报错,修改一维数组,二维数组,报错的原因...
  10. 《刘擎西方现代思想讲义》读书笔记