国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java—Lambda基礎(chǔ)

2019-11-15 01:03:25
字體:
供稿:網(wǎng)友
java—Lambda基礎(chǔ)

雖然JVM有著Scala 、Groovy 、Clojure 等依賴于JVM的函數(shù)語式語言,但直到Java8才算是java正式支持函數(shù)式編程;  Java8中加入了Lambda的支持標(biāo)志著Java正式加入了混合式編程語言(支持命令式編程與函數(shù)式編程)的行列;像C#、Python都是同時(shí)支持兩種編程范式,近年來函數(shù)式編程愈演愈烈,大有命令式編程向函數(shù)式編程靠攏的趨勢(shì);  命令式編程與函數(shù)式編程的最基本區(qū)別在于使用的計(jì)算模型的不同,命令式編程是基于圖靈機(jī)的,而函數(shù)式編程使用的是lambda演算; 有了lambda的支持使用Java8可以寫出可讀性更高的代碼,減少代碼的繁雜度、傳遞行為等;

比較

  像之前我們實(shí)現(xiàn)一個(gè)接口的時(shí)候可以使用匿名內(nèi)部類的方式,先看下匿名內(nèi)部類實(shí)現(xiàn):

Runnable PRimitive=new Runnable() {   @Override   public void run() {       System.out.println("inner class");      }   }; 

lambda的實(shí)現(xiàn): Runnable lambda = ()-> System.out.println(" lambda ");  比較兩種實(shí)現(xiàn)方式lambda的簡潔程度是匿名內(nèi)部類沒法比的,lambda實(shí)現(xiàn)可以理解為傳遞行為給Runnable,而匿名內(nèi)部類則是現(xiàn)實(shí)了Runnable接口;是不是lambda可以代替匿名內(nèi)部類出現(xiàn)在所有地方呢? 答案不是的。 Lambda只能代替內(nèi)部類出現(xiàn)在的接口為函數(shù)接口(FunctionalInterface)的地方。

語法
  lambda語法:  () -> {} 1、 ()里面為函數(shù)接口的參數(shù),{} 與要傳遞到函數(shù)接口的語句; 2、 lambda方式如果有多條語句還可以用{ 括號(hào)括起來; 3、 如只有一條語句則可以省略{},函數(shù)接口存在返回值當(dāng)->后面只有單條語句時(shí)return可以省略,如有多條語句則需要顯示return返回該值;

函數(shù)接口(Functionalnterface):只定義一個(gè)抽象方法的接口默認(rèn)為函數(shù)接口,接口中可以有default方法和static方法,

簡單應(yīng)用
//實(shí)現(xiàn)x+y相加    BinaryOperator<Integer> addOperator = (x, y) -> x+y;    System.out.println(addOperator.apply(3,4));

  Java8中除了在Runnable、Comparator等以往存在的接口添加了FuncationalInterface注解外還在java.util.function包中新加入了大批FuncatinalInterface接口;使用java.util.function包下面的接口可以大大簡化我們的編程;

參考資料:
 《Java8函數(shù)式編程》  

  文章首發(fā)地址:Solinx  http://www.solinx.co/archives/382


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 商南县| 和顺县| 清涧县| 东方市| 永丰县| 齐齐哈尔市| 石屏县| 陕西省| 苍南县| 孟村| 大城县| 郴州市| 武功县| 洛川县| 江孜县| 革吉县| 上林县| 偃师市| 吉林省| 西盟| 汕尾市| 岚皋县| 富裕县| 邻水| 石城县| 台中市| 色达县| 宁强县| 宜兰市| 伊通| 文化| 蓬莱市| 年辖:市辖区| 兖州市| 分宜县| 封开县| 依安县| 隆安县| 北安市| 凤凰县| 三明市|