我有一種情況,在類初始化期間,一個子類(我們稱之爲)調用基類的靜態方法(我們稱之爲BaseClass
)並傳遞作爲參數來標識正在初始化的特定類,或者Java的:在靜態類初始化程序中是否有與Java的「this」等效的內容?
public class SubClass extends BaseClass {
static { BaseClass.init(SubClass.class); }
...
}
代替BaseClass
具有方法:
protected static void init(Class<?> c) {
...
}
我願做的是有BaseClass
通話init
自動,如:
public class BaseClass {
static { init(thisclass); }
...
}
所以,問題是,它的Java有一些關鍵字,通過上述thisclass
表示,返回的類類初始化初始化?
如果您有多個子類,那麼一個基類靜態初始化程序如何初始化多個子類? –
在'BaseClass'的靜態初始化塊中初始化的類總是'BaseClass'。如果你期望初始化器運行子類,你需要調整你的期望值。 – user2357112
也許將此視爲一個抽象問題。我從我的實現中解決了這個問題,這很好,但我想避免必須明確告訴基類正在初始化哪個子類。實際上,我將SubClass.class的值存儲爲Map的鍵;映射的值是BaseClass爲每個子類跟蹤的信息。 –