亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 622 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號