zoukankan      html  css  js  c++  java
  • (隐式参数)java8的方法引用之重新认识java的this关键字

    兴冲冲的刷完力扣准备去群里吹波水,结果被群友甩出来的一张图打翻在原地。

    函数式编程需要各位自行补充,lambda的使用(以前觉得自己对lambda了解的够详细了,真是在无知的时候不知道自己是无知)大家可以看我另一篇博客

    学习jdk1.8的Lambda和Stream

    言归正传,第一次看见这个写法当场就蒙在了原地,为什么

    biFunction=A::test1;
    可以通过编译?
    明明这个方法只接受一个传参,而我们函数编程传递两个参数却一样可以呢?

    这块需要两个知识点兼顾:
    1.java隐藏关键字this
    2.java8方法引用

    首先在非静态方法中,方法只能通过实例对象来进行调用,因此无法凭空使用一个方法,lambda会将我们传递的第一个参数作为当前方法的调用者。
    到这里 我们就可以明白为什么方法只接受一个参数,而我们传递两个的时候一样可以正确执行。


    那么就会出现第二个问题,为什么是第一个参数作为调用者而不是第二个第三个或者最后一个?
    到这里就需要说道我们另一个知识,就是我们的隐藏关键字this
    关于this的概念:我们知道this 是隐式参数, 类的方法被调用时,系统会自动隐式传递一个this参数给当前方法。
    在方法中表示对象。
    而这个隐式参数的位置就是在我们方法中参数列表的第一位,如下图:

     

    到此算是把我在群里的问题,迎刃而解。

    写的不够好,希望大家多多海涵。

     
  • 相关阅读:
    error C2144
    Linux下STL使用
    GZip压缩的实例
    头文件类型的选择
    双重指针
    locate命令的使用
    有了malloc/free为什么还要new/delete !
    Mongdb windows下安装
    虚函数工作机制
    extern使用
  • 原文地址:https://www.cnblogs.com/MQTimor/p/11498567.html
Copyright © 2011-2022 走看看