我想實例化一個名爲「T」擴展「AbstractLauncher」的泛型類,我不明白我在谷歌上看到的所有主題。你可以幫幫我嗎 ? 我有幾個類中調用ConcretXLauncher,我不會對我的MainClass「ConcretXLauncher」,但只有仿製藥誰可能是任何延長AbstractLauncher ...如何做一個泛型類T的「新」擴展AbstractClass(JAVA)
public MainClass < T extends AbstractLauncher > {
public MainClass(Config config){
//T launcher = new T(config); doesnt work, I want to do new ConcretXLauncher(config)
T launcher = newInstance(????);
// code using "launcher"
}
public static <T> T newInstance(Class clazz) {
return clazz.newInstance() ;
}
}
在其他的話題,我看到了這個功能,但我不知道該怎麼稱呼它? 我需要提供什麼「clazz」參數?
我們甚至不知道你在說什麼語言...... – 2013-04-30 19:55:36
你不能像這樣實例化一個泛型類。 '新T'不起作用。 – 2013-04-30 20:00:52
創建通用類型的實例目前不可行,但您可以實現工廠模式。更多信息可以在這裏http://en.wikipedia.org/wiki/Factory_method_pattern,甚至更好這裏http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java。 – 2013-04-30 20:09:19