Java面经——JDK1.8新特性之方法引用详细原理介绍,一篇文章拿下!

本文详细介绍了Java中方法引用的三种情况,包括对象的实例方法、类的静态方法以及类的实例方法,展示了如何通过方法引用简化Lambda表达式,并以Comparator和BigPredicate接口为例。
摘要由CSDN通过智能技术生成

一、方法引用前提
方法的引用是为了简化Lambda表达式,可以使用方法引用的前提条件是:
函数式接口中抽象方法的参数和返回值形式和方法体中的方法的参数和返回值一致,那么就可以使用方法引用

二、方法引用的三种情况
1、对象::实例方法名(非静态方法)
2、类::静态方法名
3、类::实例方法名

三、方法引用的三种情况推导
1、对象::实例方法名(非静态方法)
(1)常见的使用Java内置的消费型函数式接口

(2)使用方法引用
    ①Consumer接口抽象方法:void accept(T t);
    ②上面方法体中的方法:void println(String x);  
    上面的格式满足使用方法引用的条件:参数和返回值类型相似

2、类::静态方法名
  当我们实现函数式接口,重写它的方法,方法体中调用某类的静态方法,该静态方法和函数式接口中的抽象方法参数和返回值 一样,就可以使用方法引用来进行简化
举例说明:
(1) Integer中有一个compare方法,比较两个数字的大小关系,参数是两个int类型的参数


(2)Comparator接口中有一个抽象方法和上面的compare方法参数和返回值一样,就可以通过方法引用来简化

(3)可以简化成

Comparator<Integer> com = Integer::compare;(通过类型推断,能推断出参数是否一样)
com.compare(10,20); //返回-1

3、类::实例方法名
该情况以断定型接口为例,传入参数,返回值为布尔类型,传入两个参数,比较是否相等
使用这个方法引用的前提,x作为方法的调用者,y作为方法的实际参数

简化成

BigPredicate<String,String> bp = String::equals;
bp.test("def","def"); //返回true(test是断定型接口中的抽象方法)

至此,关于方法引用技术点的介绍完毕,后续还会持续更新更多面试经典题目,希望大家能够持续关注!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Be explorer

若认可笔者文章,手头富裕望支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值