一、Lamda表达式之函数式接口介绍及表达式初识

注:部分素材来源Lambda表达式及函数式接口介绍-51CTO学院

           最近在看一些三方框架的时候,发现在这些框架中大量的使用了java8的新特性,比如随处可见的lamda表达式以及Stream类的很多骚操作,看的是一脸懵逼!在当今社会,颠覆在时时刻刻的上演,故步自封只能被无情的淘汰!拥抱变化这是你我唯一能做的!

        回到正题,如何看懂框架源码中这些“奇奇怪怪”的代码(不明觉厉),因此很有必要学习一下java8的某些重要的新特性,Lamda表达式当仁不让。

        我们先了解一下基本的理论知识

        1、什么是Lamda表达式

            Lambda表达式是 Java8 中最重要的新功能之一。Lambda表达式是对象,是一个函数式接口的实例。使用 Lambda 表达式可以替代只有一个抽象函数的接口实现,告别匿名内部类,代码看起来更简洁易懂。Lambda表达式同时还提升了对集合、框架的迭代、遍历、过滤数据的操作。

        2、Lamda表达式的语法格式

            args -> expr或者(Object… args) -> {函数式接口抽象方法实现逻辑},()里面参数的个数,根据函数式接口里面抽象方法的参数个数来决定。当只有一个参数的时候,()可以省略当expr逻辑非常简单的时候,{}和return可以省略

        2、Lamda表达式特点

            1):函数式编程

            2):参数类型自动推断

            3):代码量少,简洁

        3、Lamda表达式的优点

             1):更简洁的代码

             2):更容易的并行

        4、如何学好Lamda表达式

            1):熟悉泛型

            2):多练,多用Stream API

        5、Lambda表达式使用场景

            任何有函数式接口的地方

        6、什么是函数式接口(重点)

            只有一个抽象方法(Object类中的方法除外)的接口是函数式接口

            上面简单介绍了一些基本的理论知识,理解起来可能有些抽象。怎么办呢?下面我们具体的来学习一下,通过实例练习之后,我相信回过头再看这些理论知识会好很多。

            我们举个最常用的lamda应用场景:

          之前我们从理论知识中知道,lamda的应用场景是在有函数式接口的地方,那么我们是不是可以理解为Runnable为函数式接口呢?我们

          重温一下函数式接口定义: 有且只有一个抽象方法(非Object方法)的接口为函数式接口。

我们来看下Runnable接口源码:

不出所料,Runable接口正是标准的函数式接口。细心的同学应该发现了Runnable接口上面有个注解:FunctionalInterface,该注解正是标注该接口是函数式接口。如果不是函数式接口,添加这个注解会出错。举个例子:

第一个错误原因是不满足只有一个抽象方法的条件,第二个错误的原因是hashCode()方法是object方法,除去之外没有了抽象方法,不满足有一个抽象方法的条件,因此也不是函数式接口。

我们来了解一下jdk中一些非常常用的函数式接口(重点罗列常用接口),熟悉这些接口是非常必要的。(先留个印象,后面以及实际开发中会常用到这些接口)

         Consumer 代表一个输入    Supplier 代表一个输出      

        Function 代表一个输入,一个输出(一般输入和输出是不同类型的)    UnaryOperator 代表一个输入,一个输出(输入和输出是相同类型的)

        BiConsumer 代表两个输入

        BiFunction 代表两个输入,一个输出(一般输入和输出是不同类型的)BinaryOperator 代表两个输入,一个输出(输入和输出是相同类型的)

        我是这么记忆的,分为四组,

        第一组单次元的输入Supplier和输出Comsumer,

        第二组两个输入的BiConsumer

        第三组二次元的输入输出不同类型Function(一般不同类型,但是也是可以同类型的)以及输入输出同类型UnaryOprator

        第四组两个输入,一个输出且输入输出不同类型的BiFunction(同时也是可以同类型的)以及输入输出同类型的BinaryOperator 。

下面就上面几个常用的函数式接口进行一些简单的试用。

User是我自定义的一个类,有age。我们使用泛型约束输入类型,输入user的实例,对age进行重新赋值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,173评论 9 118
  • 原文链接: Lambdas 原文作者: shekhargulati 译者: leege100 lambda表达式是...
    忽来阅读 6,576评论 8 129
  • 第8章 函数式编程(FP) 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去...
    光剑书架上的书阅读 1,731评论 0 17
  • Java8 in action 没有共享的可变数据,将方法和函数即代码传递给其他方法的能力就是我们平常所说的函数式...
    铁牛很铁阅读 1,223评论 1 2
  • 雨还在下 天亮了 夜里做了梦 梦里看到了同学们 还有老公的样子没有变 我想着他变了该多好 家的院子里有好多的葱 还...
    田萍阅读 198评论 0 2