彻底理解Java “方法引用“

彻底理解Java “方法引用”

导语

笔者之前对“方法引用”这个概念一直很模糊,只知道是JDK8的新特新,也在各大开源作品见到过,但一直不理解到底是什么东西,今天下午忙里偷闲,经过二十分钟左右的时间,彻底理解了“方法引用”是干啥的,下面就给大家说说自己的心得。

先说总结

方法引用说简单点,就是代替比较简单的Lambda表达式而已,会让你的代码看起来比较简洁易懂。

一探究竟

下面用一个小例子,来说明什么是 方法引用。
用大家最熟悉的 创建线程的步骤来说明


        // 创建一个线程最原始的办法是这样的 ↓
        new Thread(new Runnable() {
            @Override
            public void run() {

            }
        }).start();
 		/*
         大家在学习lambda后,可以简化为,下面这样.
         Thread类的构造参数里是一个 ()->{}  这个东东,这个代表的就是Runnable接口的run方法
         */
        new Thread(() -> {

        }).start();

上面我已经提到过了,方法引用的出现是为了简化 lambda表达式的,所以下面,我将用方法引用的方法,来改造这段代码~

public class Demo {

    public static void main(String[] args) {
        /*
         使用自己的方法代替Runnable接口中的Run方法
         Demo: 类名
         test: 方法名
         */
        new Thread(Demo::test).start();

    }

    public static void test () {
        System.out.println("代替lambda的方法");
    }

}

下面可能会有人懵逼了,为什么可以这样写?::是个什么鬼?别急,让我慢慢解答

大家仔细观察,发现我定义的test方法的参数和返回值跟Runnable接口的Run方法是一致的,
在这里插入图片描述
在这里插入图片描述

所以,可以得出结论,如果被引用的方法和原方法的参数和返回值一致的话,就可以使用方法引用。

至于::号是个什么鬼,这只是Java定义的一种写法,和lambda的() -> {}写法是一个道理,大家熟悉了记好了。

注意

  1. 方法引用的写法是 类名::方法名
  2. 被引用的方法的参数和返回值必须和原方法一致
  3. 写的不全面也不权威,只是想让大家更快的了解什么是 方法引用 而已。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值