我只是在學習java,而我遇到了一些問題。 下面我們就簡單工廠模式:自動工廠註冊
public class SomeFactory {
...
public static void registerProduct(String name, Class<? extends IProduct > f)
}
public SomeProduct implements IProduct {
static {
SomeFactory.register("some product", SomeProduct.class);
}
...
}
所有產品應該在出廠登記。
但是在使用此代碼之前,應該加載所有的產品類。 我可以把Class.forName()
放在某個地方,例如在main函數中。 但我想避免這樣的手動類加載。我只想添加新的IProduct
實現,而不更新其他部分(如SomeFactory
或Main
方法等)。 但我想知道,是否可以自動加載一些類(例如標註了註釋)?
P.S我想要注意的是,在運行時不會添加其他類,所有IProduct
實現在編譯之前都已知。
UPD#1 感謝您的回答! 但是有可能使用IProduct
實例自動生成屬性文件? 我的意思是可以製作一些生成屬性文件或加載程序代碼的構建時腳本(例如,用於maven)?有沒有這樣的解決方案或框架?
UPD#2 我完成使用Reflections library,其提供運行時信息,通過在啓動時掃描類路徑。
怎麼是'this.getClass()'將在'靜態{}'...工作O_O? –