Java8中如何使用方法引用
                                            本篇文章给大家分享的是有关Java8中如何使用方法引用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

专注于为中小企业提供成都网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业嘉善免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
在学习lambda表达式之后,我们通常使用lambda表达式来创建匿名方法。然而,有时候我们仅仅是调用了一个已存在的方法。如下:
Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2));
在Java8中,我们可以直接通过方法引用来简写lambda表达式中已经存在的方法。
Arrays.sort(stringsArray, String::compareToIgnoreCase);
这种特性就叫做方法引用(Method Reference)。
方法引用的形式
方法引用的标准形式是: 类名::方法名 。(注意:只需要写方法名,不需要写括号)
有以下四种形式的方法引用:
| 类型 | 示例 | 
|---|---|
| 引用静态方法 | 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); 
    }
 } 
引用静态方法
Person [] persons = new Person[10]; //使用匿名类 Arrays.sort(persons, new Comparator() { @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表达式和类的静态方法 Arrays.sort(persons, (o1, o2) -> Person.compareByAge(o1,o2)); //使用方法引用 //引用的是类的静态方法 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, DEST extends Collection > DEST transferElements(SOURCE sourceColletions, Supplier colltionFactory) { DEST result = colltionFactory.get(); for (T t : sourceColletions) { result.add(t); } return result; } ... final List personList = Arrays.asList(persons); //使用lambda表达式 Set personSet = transferElements(personList,()-> new HashSet<>()); //使用方法引用 //引用的是构造方法 Set personSet2 = transferElements(personList, HashSet:: new ); 
以上就是Java8中如何使用方法引用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
网页标题:Java8中如何使用方法引用
分享链接:http://www.scyingshan.cn/article/iiedch.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 