第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java函數(shù)式編程(1):Lambda表達式(2)

標簽:
Java

您好,我是湘王,这是我的慕课手记,欢迎您来,欢迎您再来~


从之前的Lambda表达式的演变过程可以知道Lambda表达式其实是一个对匿名内部类的简化过程去掉了多余的语法修饰只保留最最核心的部分Java中类似这种使用匿名内部类写代码的场景非常多比如Runnable接口就是典型的最好使用Lambda表达式的地方例如这样的代码

https://img1.sycdn.imooc.com//6363c3c60001c27b05440190.jpg

 

可以清除地看到代码的简化过程

所以Lambda表达式的特点在于

1、匿名:像匿名函数一样,没有名字,只有代码块

2、函数:基于接口函数执行,而不是类

3、行为:传递行为,而非封装代码

很多刚开始学习Lambda表达式的人之所以觉得比较难适应是因为没有弄明白完整的匿名函数是如何进行简化的这个过程我个人的学习经验是只要脑子里时时记着Lambda是对匿名函数的简化就会容易理解一些了

Java8除了将匿名内部类改造成了Lambda表达式之外还提供了一个注解叫做@FunctionalInterface它专门用来自定义需要的函数式接口例如

/**
 * 定义一个函数式接口
 *
 * @author 湘王
 */
@FunctionalInterface
public interface FruitInterface<T> {
   void select(T t);
}

 

它可以这么来用

FruitInterface face = (t) -> System.out.println("这是自定义的函数式编程接口");

 

省略了实例化的类名省略了方法名省略了参数类型只显示方法的参数和方法体自然过渡到Lambda表达式的建议

https://img1.sycdn.imooc.com//6363c3d50001369f06030432.jpg

 

这是Java提供的注解除了这个注解以外为了方便码农开发Java也预定义了一堆可以直接拿来就用的函数式接口常用的都列到这个表里了

https://img1.sycdn.imooc.com//6363c3db000185e109720575.jpg

 

什么是供给型呢意思就是没有消费却能提供输出消费指的是有没有参数)。例如之前说的Runnable就是一个供给型接口可以简化成

() -> System.out.println("这是run()方法里面的打印语句");

 

再比如预测型可能是

FruitInterface face = (t) -> System.out.println("这是自定义的函数式编程接口");

 

所以先把Java预定义的函数式接口弄熟也是一个不错的开始

之所以花这么多篇幅来说Lambda表达式和函数式接口是因为这玩意确实是比较难理解不管对于刚入门的新手还是有了一些开发经验的老手都是如此所以新人不必觉得为啥自己学不会不止是新人很多有多年开发经验的人都容易卡在这里这也是我为啥宁可多花点篇幅反复啰嗦的原因

 

至于方法引用和构造器引用并不是什么高大上的技术只要把Lambda表达式和函数式编程的底层原理搞懂了那玩意分分钟学会

 


感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~



點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消