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>類型。
添加回答
舉報
0/150
提交
取消