Java基礎之【java8之lambda表達式】

資料參考自 菜鳥教程 https://www.runoob.com/java/java8-new-features.html

之前對這個lambda的理解一直很模糊,相關概念也很多,雖然項目中經常用到,而且idea會提示,如把

 private void sortUsingJava7(List<String> names){   
      Collections.sort(names, new Comparator<String>() {
         @Override
         public int compare(String s1, String s2) {
            return s1.compareTo(s2);
         }
      });
   }
   
   // 使用 java 8 排序
   private void sortUsingJava8(List<String> names){
      Collections.sort(names, (s1, s2) -> s1.compareTo(s2));
   }

 排序的方法自動讓你優化爲lambda表達式形式

 

lambda最核心的就是允許把函數作爲一個方法的參數傳入到方法中,其實就相當於傳入了這個接口的一個你自定義的默認實現方法,如圖:

使用注意的地方是:

1.lambda 表達式只能引用標記了 final 的外層局部變量,不能修改

2.lambda 表達式的局部變量可以不用聲明爲 final,但是必須不可被後面的代碼修改(即隱性的具有 final 的語義)

3.函數式接口(Functional Interface)就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的接口。

函數式接口可以被隱式轉換爲 lambda 表達式

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章