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

Java的lambda表達式實現(xiàn)解析

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

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

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

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

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

對于第一點的回答是FuntionalInterface的Annotation,第二點的回答是default方法。

FunctionalInteface

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

  1. 該interface只能有一個抽象方法等待子類實現(xiàn)
  2. 之后,此interface對應的對象,可以是lambda表達式
  3. lambda表達式必須與此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)實現(xiàn)的方法。那么問題來了。interface為什么一定需要這個特性?java的interface不就是應該都只有抽象方法嗎?

考慮一下這個例子

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表達式,必須對List進行一些改變。但是,JDK要向下兼容,一旦對已知的List增加接口,勢必無法保證兼容性。所以,出于這個原因,想辦法增加了default方法。這使得一個接口可以定義默認方法,以保全JDK原有的接口可以繼續(xù)向下兼容。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

    Activiti如何啟動流程并使流程前進

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

    SpringCloud?Ribbon負載均衡原理

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

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

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

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

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

    Java日志API管理最佳實踐詳解

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

    Java基礎篇之對象數(shù)組練習

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

    Springboot整合freemarker 404問題解決方案

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

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

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

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

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

最新評論

遂昌县| 诏安县| 治多县| 富裕县| 奇台县| 启东市| 工布江达县| 惠来县| 玉屏| 诸城市| 都江堰市| 古浪县| 崇礼县| 冷水江市| 平度市| 红原县| 商河县| 彭水| 和林格尔县| 华阴市| 沧源| 永靖县| 茌平县| 轮台县| 吉安县| 嘉兴市| 朝阳县| 和平区| 龙南县| 安龙县| 枣强县| 宁都县| 武胜县| 兖州市| 石景山区| 改则县| 丰城市| 蓝山县| 太和县| 怀集县| 阜新|