簡體   English   中英

如何創建從方法實現接口的類的實例?

[英]How can I create an instance of a class implementing an interface from a method?

我有以下問題。
我有以下Java類:

class A {
    B makeB() {
        return new B();
    }
}

class B implements X {
    // X methods implementations (plus other methods)
}

interface X {
    // methods declarations
}

為了進行測試,我需要修改makeB方法,以便它可以為實現X接口的每個類創建一個新實例。

我嘗試了泛型:

class A<T extends X> {
    X makeB() {
        return new T();
    }
}

但是此代碼不正確。 我還嘗試了以下方式:

class A {
    X makeB() {
        return X.createInstance();
    }
}

class B implements X {
    @Override
    public static X createInstance() {
        return new B();
    }
    // X methods implementations (plus other methods)
}

interface X {
    static X createInstance() {}
    // other methods declarations
}

但是Java不支持覆蓋靜態方法。

如何更改makeB以使其表現出我想要的效果(如果有方法的話)?

(標題和問題描述都不是很清楚,問題是我找不到更好的表達方式。我很抱歉。)

感謝所有會回答的人。

查看Mockito一個單元測試框架,該框架可讓您模擬(重寫/重新定義)方法實現。

也可以看看依賴注入模式,該模式有助於解決此類問題。

泛型可能是更好的方法。 您的通用代碼在語法上不正確。 嘗試這個:

class A<T extends X> {
    T makeB() {
        return new T();
    }
}

資料來源: https : //docs.oracle.com/javase/tutorial/java/generics/types.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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