java lambda表达式疑问

  • Car::new 跟 Car car=()->new Car() 有啥区别 双冒号又是怎么用的?


达令说
浏览 607回答 1
1回答

湖上湖

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

相关分类

Java