::方法引用

学习这章之前请先了解 Lambda表达式 和 函数式接口

在Java8中可以使用双冒号操作符::来简化Lambda表达式。::表示方法引用,其语法格式如下

容器::方法名

::方法引用由三部分组成:

  • 左边是容器,可以是类名或实例名
  • 中间是::操作符
  • 右边是相应的方法名,注意方法名没有小括号

::方法引用可以用于静态方法、实例方法以及构造方法中,引用不同方法时书写格式也不同

静态方法

类名::静态方法名

实例方法

对象::实例方法名

构造方法

类名::new

【示例】::静态方法的引用

//String.valueOf()静态方法
String::valueOf
//Math.max()静态方法
Math::max

//上面两行代码等价于下面两条Lambda表达式
x -> String.valueOf(x)
(a,b) -> Math.max(a,b)

下述代码,在上一个文章函数式接口的FIConverter函数式接口基础上,分别使用Lambda表达式和::方法引用的方式实现不同数据类型之间的转换。

MethodReferenceDemo.java

public class MethodReferenceDemo {
    public static void main(String[] args) {
        //Lambda表达式方式实现函数式接口中的抽象方法
        FIConverter<String,Integer>converter1 =
                (from) -> Integer.valueOf(from);
        Integer a = converter1.convert("123");
        System.out.println(a);
        
        //::方法引用的方式
        FIConverter<String,Integer>converter2 = Integer::valueOf;
        Integer b = converter2.convert("456");
        System.out.println(b);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值