最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的lambda表達(dá)式實(shí)現(xiàn)解析

 更新時(shí)間:2017年06月22日 10:08:17   作者:簡單備忘錄  
這篇文章主要為大家詳細(xì)介紹了Java的lamda表達(dá)式實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Java8引入了lambda表達(dá)式。lambda表達(dá)式并不是新功能,只是為了方便代碼編寫的語法糖。

但,即便是在其他語言已經(jīng)司空見慣的lambda表達(dá)式,如果在Java中要支持它,還需要考慮各種向下兼容的問題。

簡單的說,Java的lambda表達(dá)式支持,大約需要考慮2個方面

  • 需要支持lambda語法,以替代原有的方法匿名類
  • 需要考慮已有JDK中,如何增加新操作以支持lambda表達(dá)式

對于第一點(diǎn)的回答是FuntionalInterface的Annotation,第二點(diǎn)的回答是default方法。

FunctionalInteface

通過在一個interface上增加@FunctionalInterface, 表示這個接口是特殊interface。其特殊性體現(xiàn)在

  1. 該interface只能有一個抽象方法等待子類實(shí)現(xiàn)
  2. 之后,此interface對應(yīng)的對象,可以是lambda表達(dá)式
  3. lambda表達(dá)式必須與此interface中唯一的抽象方法簽名相一致
@FunctionalInterface
public interface ITest {
  void sayHello(String name); 
}

public class Testlambda {
    public static String name = "test";
    public static void testRun2(ITest test){
      test.sayHello(name);
    }
    public static void main(String[] args) {
      testRun2(test->System.out.println(test));
    }
}

Default方法

default方法只能在interface中聲明。default方法使得interface也可以定義已經(jīng)實(shí)現(xiàn)的方法。那么問題來了。interface為什么一定需要這個特性?java的interface不就是應(yīng)該都只有抽象方法嗎?

考慮一下這個例子

List<Integer> alist = new ArrayList<Integer>();
alist.add(1);
alist.add(2);
alist.add(3);
alist.add(4);
alist.forEach((s)->System.out.println(s));  

List是JDK java.util的一個接口。此接口由來已久。如果要在其中引入forEach方法,而且支持使用lambda表達(dá)式,必須對List進(jìn)行一些改變。但是,JDK要向下兼容,一旦對已知的List增加接口,勢必?zé)o法保證兼容性。所以,出于這個原因,想辦法增加了default方法。這使得一個接口可以定義默認(rèn)方法,以保全JDK原有的接口可以繼續(xù)向下兼容。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot在有鎖的情況下正確使用事務(wù)的實(shí)現(xiàn)代碼

    Springboot在有鎖的情況下正確使用事務(wù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Springboot在有鎖的情況下如何正確使用事務(wù),今天通過一個實(shí)驗(yàn)給大家分析一下商品超賣問題,模擬場景分析通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • Activiti如何啟動流程并使流程前進(jìn)

    Activiti如何啟動流程并使流程前進(jìn)

    這篇文章主要介紹了Activiti如何啟動流程并使流程前進(jìn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringCloud?Ribbon負(fù)載均衡原理

    SpringCloud?Ribbon負(fù)載均衡原理

    這篇文章主要介紹了SpringCloud?Ribbon負(fù)載均衡原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2022-09-09
  • SpringMVC框架post提交數(shù)據(jù)庫出現(xiàn)亂碼解決方案

    SpringMVC框架post提交數(shù)據(jù)庫出現(xiàn)亂碼解決方案

    這篇文章主要介紹了SpringMVC框架post提交數(shù)據(jù)庫出現(xiàn)亂碼解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 淺談JAVA內(nèi)存分配與參數(shù)傳遞

    淺談JAVA內(nèi)存分配與參數(shù)傳遞

    這篇文章主要介紹了JAVA內(nèi)存分配與參數(shù)傳遞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java日志API管理最佳實(shí)踐詳解

    Java日志API管理最佳實(shí)踐詳解

    這篇文章主要介紹了Java日志API管理最佳實(shí)踐詳解,記錄日志只是有效地利用日志的第一步,更重要的是如何對程序運(yùn)行時(shí)產(chǎn)生的日志進(jìn)行處理和分析。,需要的朋友可以參考下
    2019-06-06
  • Java基礎(chǔ)篇之對象數(shù)組練習(xí)

    Java基礎(chǔ)篇之對象數(shù)組練習(xí)

    對象數(shù)組就是數(shù)組里的每個元素都是類的對象,賦值時(shí)先定義對象,然后將對象直接賦給數(shù)組就行了,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)篇之對象數(shù)組練習(xí)的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Springboot整合freemarker 404問題解決方案

    Springboot整合freemarker 404問題解決方案

    這篇文章主要介紹了Springboot整合freemarker 404問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 詳解springmvc攔截器攔截靜態(tài)資源

    詳解springmvc攔截器攔截靜態(tài)資源

    本篇文章主要介紹了詳解springmvc攔截器攔截靜態(tài)資源,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確方法

    SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確方法

    什么叫優(yōu)雅停機(jī)?就是向應(yīng)用進(jìn)程發(fā)出停止指令之后,能保證正在執(zhí)行的業(yè)務(wù)操作不受影響,直到操作運(yùn)行完畢之后再停止服務(wù)。本文就來和大家聊聊SpringBoot實(shí)現(xiàn)優(yōu)雅停機(jī)的正確姿勢,希望對大家有所幫助
    2023-01-01

最新評論

乌兰县| 榆树市| 巨鹿县| 同江市| 封开县| 塔河县| 监利县| 光泽县| 邹平县| 松潘县| 凭祥市| 特克斯县| 休宁县| 江津市| 德安县| 南昌市| 安徽省| 荥经县| 松桃| 兴文县| 丰台区| 陆丰市| 安陆市| 临清市| 谷城县| 中江县| 石泉县| 凉山| 安阳县| 贺兰县| 房产| 青河县| 遂溪县| 河东区| 台中市| 山丹县| 乃东县| 成都市| 玉林市| 峨眉山市| 秭归县|