[英]How can I add a protected method to a class implementing an interface in java?
[英]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
以使其表現出我想要的效果(如果有方法的話)?
(標題和問題描述都不是很清楚,問題是我找不到更好的表達方式。我很抱歉。)
感謝所有會回答的人。
泛型可能是更好的方法。 您的通用代碼在語法上不正確。 嘗試這個:
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.