lambda方法引用 java_Java 8Lambda之方法引用(Method References)

packagemethodReference;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;importjava.util.function.Supplier;/***@authorjiangxiulian

* @create 2017-12-28 下午12:03

**/

public classMethodReference {public static voidmain(String args[]){//引用构造函数

PersonFactory factory = new PersonFactory(Person::new);//PersonFactory personFactory = new PersonFactory(() ->new Person());

List personList = new ArrayList();

Person p1=factory.getPerson();

p1.setName("Kobe");

personList.add(p1);

Person p2=factory.getPerson();

p2.setName("James");

personList.add(p2);

Person p3=factory.getPerson();

p3.setName("Paul");

personList.add(p3);

Person[] persons1= personList.toArray(newPerson[personList.size()]);

System.out.print("排序前");

printArray(persons1);

System.out.println();//引用静态方法

Arrays.sort(persons1,MethodReference::myCompare);

System.out.print("排序后");

printArray(persons1);

System.out.println();

Person[] persons2= personList.toArray(newPerson[personList.size()]);

System.out.print("排序前");

printArray(persons2);

System.out.println();//引用特定对象的实例方法

Arrays.sort(persons2,p1::compare);

System.out.print("排序后");

printArray(persons2);

System.out.println();

Person[] persons3= personList.toArray(newPerson[personList.size()]);

System.out.print("排序前");

printArray(persons3);//引用特定类型的任意对象的实例方法

Arrays.sort(persons3,Person::compareTo);

System.out.print("排序后");

printArray(persons3);

}public static voidprintArray(Person[] persons) {for(Person p : persons) {

System.out.print(p.name+ " ");

}

System.out.println();

}public static intmyCompare(Person p1, Person p2) {returnp1.getName().compareTo(p2.getName());

}static classPerson{privateString name;publicPerson(){

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}public intcompare(Person p1,Person p2){returnp1.getName().compareTo(p2.getName());

}public intcompareTo(Person p){return this.getName().compareTo(p.getName());

}

}static classPersonFactory{private Suppliersupplier;public PersonFactory(Suppliersupplier){this.supplier =supplier;

}publicPerson getPerson(){returnsupplier.get();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值