为什么这两个方法参数不一样,还能方法引入?

作者站长头像
站长
· 阅读数 14

为什么这两个方法参数不一样,还能方法引入?

为什么这两个方法参数不一样,还能方法引入?

为什么这两个方法参数不一样,还能方法引入?为什么这两个方法参数不一样,还能方法引入?

回复
1个回答
avatar
test
2024-07-16

一步一步简化,最后用方法引用表示只有一个方法调用的labmda表达式

u -> {return u.getAge();}
u -> return u.getAge()
Users::getAge

getAge() 其实可以视为两个方法:

  1. 无参的Integer getAge(),对应 Supplier<Integer>,方法引用是Users:getAge
  2. 有特殊参数的 Integer getAge(Users this),对应 Function<Users, Integer>,方法引用也是Users::getAge,符合comparing 的参数类型,于是可以用了
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容