我是靠谱客的博主 怡然日记本,最近开发中收集的这篇文章主要介绍lambda基础第二章:方法引用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这是第二章 0基础的可以看下我的第一张
若Lambda中已经有方法实现了,我们就可以使用方法引用
可以理解为方法体是Lambda表达式的另外形式
主要有三种语法
第一种:对象::实例方法名
根据上面获得Consumer是消费型接口 没有返回值 但有一个参数

Consumer<String> con1=(e)->System.out.println(e);
con1.accept("aaaa");
//System.out是打印流 我们可以优化一下
PrintStream out1 = System.out;
Consumer<String> con2=(e)->out1.println(e);
con2.accept("aaaa");
//因为println的返回值是void Consumer的返回值也是void 
//他们都是传递一个参数 所以就可以使用我们的语法 **对象::实例方法名**
//也就是说	当你实现的接口的方法的参数类型和返回值类型要和我调用的方法的参数类型
//和返回值类型保持一致时就可以使用对象::实例方法名
PrintStream out2 = System.out;
Consumer<String> con3=out2::println
//或者 快捷键soutc
Consumer<String> con3=System.out::println

第二种:类::静态方法名

//我们使用比较器来
Comparator<Integer> com1=(x,y)->Integer.compare(x,y);
//因为Integer实现了Comparator函数式接口 可以使用类::静态方法名
Comparator<Integer> comparator1=Integer::compareTo;

第三种:类::实例方法名

//我们使用断言型接口来
BiPredicate<String,String> bp=(x,y)->x.equals(y);
//lambda 参数列表的第一参数是实例方法的调用者 第二参数是实例方法的参数 可以使用类名::方法
BiPredicate<String,String> bp2=String::equals;

还有两个不一样的引用方式
构造器引用:ClassName::new也就是new一个对象

//我们使用供给型接口 Supplier没有参数 下面也不需要传入参数
Supplier<Employee> supplier=()->new Employee();
System.out.println(supplier.get());
//构造器引用
Supplier<Employee> supplier1=Employee::new;
System.out.println(supplier1.get());

数组引用:Type::new


Function<Integer,String[]> function=(e -> new String[e]);
String[] apply = function.apply(10);
System.out.println(apply1.length);
//数组引用
Function<Integer, String[]> function1=String[]::new;
String[] apply2 = function1.apply(10);
System.out.println(apply2.length);

最后

以上就是怡然日记本为你收集整理的lambda基础第二章:方法引用的全部内容,希望文章能够帮你解决lambda基础第二章:方法引用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部