java8新特性一:lambda表達式

0,首先有個新名詞,函數式接口:有且僅有一個抽象方法的接口。爲何要特別定義這麼一個玩意兒,老老實實都叫接口很差嗎?java

     開發jdk這幫大佬們發現java相比那些新興語言寫法過於臃腫,想簡化寫法不至於落後。然而所有簡化卻實現不了,只能簡化 「有且僅有一個抽象方法的接口」這樣的類,因而定義個新名詞,給這種接口提供簡便寫法。ide

1.lambda表示是否是什麼地方都能用的。它只用在函數式接口。函數

2 ,舉個栗子 有這麼一個接口對象

public interface LumbdaTestinterface {
      String test(String name);
}

我想要個實現對象怎麼辦?第一個方法另寫一個類實現接口,重寫test方法,接口

第二個方法,直接在使用的時候建立匿名實現類好比這樣開發

LumbdaTestinterface lumbdaTestinterface= new LumbdaTestinterface() {
    @Override
    public String test(String name) {
       return "苗條的"+name;
    }
};

lambda表示式就是簡化上面的匿名方式 實現以下test

LumbdaTestinterface testLambdaService = (name) -> {        return "苗條的"+name;        };

前面的括號直接寫參數,多參數用逗號分隔(類型可省),箭頭後括號直接寫方法。 只有一個參數,時能夠不寫括號。箭頭後不換行的話大括號可省,return也能省。jdk

3。這個實現連個方法名都沒有,爲何能實現test方法呢?這就是1中提到的,這種寫法要求類只能有一個抽象方法,因此這種寫法就默認是要實現的方法。lambda

相關文章
相關標籤/搜索