JavaSE@拓展补遗@笔记19@Lambda的进阶——方法引用

一、方法引用

1、作用

方法引用是为了简化代码,在JDK1.8之后出现的技术。用来代替某些Lambda表达式。

当Lambda表达式中大括号只有一行代码,且这句代码是在调用别的方法并且没有额外参数的时候,就可以简化成方法引用。

2、使用场景:

1.
   //Lambda表达式大括号中只有一个输出语句,输出语句就是调用println()方法,所以可以简化成方法引用
   stream.forEach(s->System.out.println(s));
   //            对象名::方法名
   stream.forEach(System.out::println);
   
2.
 //Lambda表达式大括号中只有一个s.length()方法,就可以使用方法引用,变成调用String类的length()方法   
 stream.map((String s)->{return s.length();}).forEach(System.out::println);
 //         类名::方法名
 stream.map(String::length).forEach(System.out::println);
​
​
3.  
 //Lambda表达式大括号中只调用了Person的构造方法,且没有传入其他的参数,唯一的参数就是Lambda表达式内的参数name,可以使用方法引用
stream4.map(name->new Person(name)).forEach(System.out::println);
 //          类名::new   (表示调用类的构造方法)
stream4.map(Person::new).forEach(System.out::println);
​
​
4.
//函数式接口--------------
@FunctionalInterface
public interface Inter {
​
    //抽象方法
    String method(int[] arr);
}
​

3、示例代码


public class Test01 {
   public static void main(String[] args) {
​
       //要求:如何在main方法中调用show方法
​
       //匿名内部类
       show(new Inter() {
           @Override
           public String method(int[] arr) {
               //因为Arrays.toString()方法能够把数组转成字符串,所以我们就调用这个方法
               return Arrays.toString(arr);
           }
       });
​
       //Lambda表达式(因为Inter是函数式接口)
       show((int[] arr)->{return Arrays.toString(arr);});
​
       //lambda表达式可以简化
       show(arr->Arrays.toString(arr));
​
       //lambda表达式大括号只有一行代码,且代码是在调用别的方法 方法也没有其他参数。
       //方法引用(直接调用Arrays类的toString方法)
       show(Arrays::toString);
   }
​
​
   //方法
   public static void show(Inter i){
       //定义数组
       int[] arr = {11,22,33};
       //调用接口的方法
       String s = i.method(arr);
       //输出结果
       System.out.println(s);
   }
}
​

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值