为了账号安全,请及时绑定邮箱和手机立即绑定

java lambda表达式疑问

java lambda表达式疑问

达令说 2018-07-12 13:22:05
Car::new 跟 Car car=()->new Car() 有啥区别 双冒号又是怎么用的?
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

 可以认为,类名::方法名是 ()->方法名的一个特例,所谓特例,就是Car::new这样的都可以写成Car car=()->new Car() ,完全一样的写法,只是麻烦,但是反过来,()->...可以实现其它的逻辑,而这些没法直接用一个方法引用表示。好比,计算器在计算数字方面,和电脑、手机是一样的,但是后者还可以做别的事情,而那些事情,计算器就干不了了。
两者是完全等价的。
Car::new,这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。比如()->new Car() 返回值是Car那么方法引用Car::new就对应着Function<Car>类型。


查看完整回答
反对 回复 2018-08-06
  • 1 回答
  • 0 关注
  • 606 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信