簡體   English   中英

Java 構造函數引用賦值與新創建的對象賦值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM