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

30分鐘入門Java8之方法引用學習

 更新時間:2017年04月07日 09:19:00   作者:JohnTsai  
在Java8中,我們可以直接通過方法引用來簡寫lambda表達式中已經存在的方法,這篇文章主要介紹了30分鐘入門Java8之方法引用學習,有興趣可以了解一下。

前言

之前兩篇文章分別介紹了Java8的lambda表達式默認方法和靜態(tài)接口方法。今天我們繼續(xù)學習Java8的新語言特性——方法引用(Method References)。

在學習lambda表達式之后,我們通常使用lambda表達式來創(chuàng)建匿名方法。然而,有時候我們僅僅是調用了一個已存在的方法。如下:

 Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2)); 

在Java8中,我們可以直接通過方法引用來簡寫lambda表達式中已經存在的方法。

Arrays.sort(stringsArray, String::compareToIgnoreCase); 

這種特性就叫做方法引用(Method Reference)。

方法引用的形式

方法引用的標準形式是: 類名::方法名 。(注意:只需要寫方法名,不需要寫括號)

有以下四種形式的方法引用:

類型 示例
引用靜態(tài)方法 ContainingClass::staticMethodName
引用某個對象的實例方法 containingObject::instanceMethodName
引用某個類型的任意對象的實例方法 ContainingType::methodName
引用構造方法 ClassName::new

下面我們通過一個小Demo來分別學習這幾種形式的方法引用:

 public  class  Person { 

    public  enum  Sex{ 

      MALE,FEMALE 

    } 

 

    String name; 

    LocalDate birthday; 

    Sex gender; 

    String emailAddress; 

 

    public  String getEmailAddress() { 

      return  emailAddress; 

    } 

 

    public  Sex getGender() { 

      return  gender; 

    } 
    public  LocalDate getBirthday() { 

      return  birthday; 

    } 

 

    public  String getName() { 

      return  name; 

    } 

    public  static  int  compareByAge(Person a,Person b){ 

      return  a.birthday.compareTo(b.birthday); 

    }

 } 

引用靜態(tài)方法

 Person [] persons = new Person[10];

//使用匿名類
Arrays.sort(persons, new Comparator<Person>() {
      @Override
      public int compare(Person o1, Person o2) {
        return o1.birthday.compareTo(o2.birthday);
      }
 });

//使用lambda表達式
Arrays.sort(persons, (o1, o2) -> o1.birthday.compareTo(o2.birthday));

//使用lambda表達式和類的靜態(tài)方法
Arrays.sort(persons, (o1, o2) -> Person.compareByAge(o1,o2));

//使用方法引用
//引用的是類的靜態(tài)方法
Arrays.sort(persons, Person::compareByAge);

引用對象的實例方法

 class  ComparisonProvider{ 

        public  int  compareByName(Person a,Person b){ 

          return  a.getName().compareTo(b.getName()); 

        } 

 

        public  int  compareByAge(Person a,Person b){ 

          return  a.getBirthday().compareTo(b.getBirthday()); 

        } 

      } 

 

 ComparisonProvider provider =  new  ComparisonProvider(); 

 

 //使用lambda表達式 

 //對象的實例方法 

 Arrays.sort(persons,(a,b)->provider.compareByAge(a,b)); 

 

 //使用方法引用 

 //引用的是對象的實例方法 

 Arrays.sort(persons, provider::compareByAge); 

引用類型對象的實例方法

 String[] stringsArray = { "Hello" , "World" }; 

 //使用lambda表達式和類型對象的實例方法 

 Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2)); 

 //使用方法引用 

 //引用的是類型對象的實例方法 

 Arrays.sort(stringsArray, String::compareToIgnoreCase); 

引用構造方法

 public  static  <T, SOURCE  extends  Collection<T>, DEST  extends  Collection<T>> 

    DEST transferElements(SOURCE sourceColletions, Supplier<DEST> colltionFactory) { 

      DEST result = colltionFactory.get(); 

      for  (T t : sourceColletions) { 

        result.add(t); 

      } 

      return  result; 

    } 

 ... 

  

 final  List<Person> personList = Arrays.asList(persons); 

 

 //使用lambda表達式 

 Set<Person> personSet = transferElements(personList,()->  new  HashSet<>()); 

 

 //使用方法引用 

 //引用的是構造方法 

 Set<Person> personSet2 = transferElements(personList, HashSet:: new );  

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

相關文章

  • JAVA JSP頁面技術之EL表達式整理歸納總結

    JAVA JSP頁面技術之EL表達式整理歸納總結

    這篇文章主要介紹了java中JSP頁面技術之EL表達式概念作用以及語法等的使用,需要的朋友可以參考
    2017-04-04
  • IDEA?設置?SpringBoot?logback?彩色日志的解決方法?附配置文件

    IDEA?設置?SpringBoot?logback?彩色日志的解決方法?附配置文件

    這篇文章主要介紹了IDEA?設置?SpringBoot?logback?彩色日志(附配置文件)的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • SpringBoot實現(xiàn)多環(huán)境配置文件切換教程詳解

    SpringBoot實現(xiàn)多環(huán)境配置文件切換教程詳解

    很多時候,我們項目在開發(fā)環(huán)境和生成環(huán)境的環(huán)境配置是不一樣的,例如,數(shù)據庫配置,這個時候就需要切換環(huán)境配置文件。本文將詳細講解SpringBoot如何切換配置文件,需要的可以參考一下
    2022-03-03
  • java中封裝JDBC工具類的實例分析

    java中封裝JDBC工具類的實例分析

    在本篇內容里小編給各位分享了一篇關于java中封裝JDBC工具類的實例分析,對此有興趣的朋友們可以學習下。
    2021-03-03
  • 新手初學Java常見排序算法

    新手初學Java常見排序算法

    排序(Sorting) 是計算機程序設計中的一種重要操作,它的功能是將一個數(shù)據元素(或記錄)的任意序列,重新排列成一個關鍵字有序的序列
    2021-07-07
  • Java文件操作之IO流 File類的使用詳解

    Java文件操作之IO流 File類的使用詳解

    在java中提供有對于文件操作系統(tǒng)的支持,這個支持在java.io.File類中進行了定義,也就是說在整個java.io包中File類是唯一一個與文件本身操作有關的類(創(chuàng)建,刪除,重命名)有關的類,而如果想要進行File類的操作,我們需要提供有完整的路徑支持,而后可以調用相應的方法進行處理
    2021-09-09
  • java 一個截取字符串的函數(shù)

    java 一個截取字符串的函數(shù)

    java 編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 要求不能出現(xiàn)截半的情況
    2017-02-02
  • 好用!解決maven包沖突的插件

    好用!解決maven包沖突的插件

    今天的主要內容是介紹一款插件,該插件的主要用途是當maven包沖突了以后,使用這款插件直接解決問題。
    2020-10-10
  • mybatis實現(xiàn)特殊字段加密方式

    mybatis實現(xiàn)特殊字段加密方式

    這篇文章主要介紹了mybatis實現(xiàn)特殊字段加密,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題

    Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題

    這篇文章主要介紹了Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題,關于Cors跨域的問題,前端有代理和jsonp的常用方式解決這種非同源的訪問拒絕策略
    2023-04-04

最新評論

凤冈县| 澳门| 阿巴嘎旗| 砚山县| 涡阳县| 海口市| 曲水县| 酒泉市| 涞水县| 广宗县| 乐亭县| 饶阳县| 江川县| 营山县| 阳西县| 武宁县| 富阳市| 汤原县| 海宁市| 阿拉善盟| 临沧市| 嵊泗县| 水城县| 彭水| 香格里拉县| 博客| 武宣县| 舞钢市| 磐石市| 温宿县| 靖安县| 临汾市| 鹤庆县| 洛阳市| 灵丘县| 武城县| 布尔津县| 桂东县| 阳泉市| 阿拉善左旗| 绥中县|