[英]Java constructor reference assignment Vs new created object assignment
我在我們的項目中遇到了以下代碼:
MyInterface var = MyClass::new;
有區別嗎
MyInterface var = new MyClass();
懶惰的?
MyInterface var = new MyClass();
創建MyClass
的實例並將其分配給MyInterface
類型的變量。 這要求MyClass implements MyInterface
並具有無參數構造函數。 結果是MyClass
一個實例,它實現了MyInterface
但是它喜歡。
MyInterface var = MyClass::new;
嘗試實現MyInterface
ad-hoc。 這要求MyInterface
是一個具有單個抽象方法的功能接口。 該單個抽象方法必須具有可從MyClass
分配的返回類型和與MyClass
的構造函數之一匹配的參數列表。
它是模擬的:
MyInterface var = new MyInterface() {
public MyClass anyMethodName() {
return new MyClass();
}
}
結果是MyInterface
一個實例,它將在調用其單個抽象方法時創建一個新的MyClass
實例,將其所有參數傳遞給MyClass
的構造函數。
換句話說,這兩個結構沒有任何共同點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.