我的类(class)是:
public class Module {}
public class WorkerModule extends Module{}
public class WalkerModule extends Module{}
我有一个模块工厂,带有静态方法来创建模块:
public static Module initializeModule(Class<? extends Module myClass) {
Module module = null;
try {
module = myClass.newInstance();
} catch (SecurityException e) {
throw new ModuleException(e);
} catch (InstantiationException e) {
throw new ModuleException(e);
} catch (IllegalAccessException e) {
throw new ModuleException(e);
}
return module;
}
它有效,但我想通过使用泛型类型来改进它。 我仍然需要我的方法来返回类参数的实例,我想强制它成为 Module 类的子类。 我不知道如何更改我的方法的声明。 也许是这样的:
public static <T> T initializeModule(Class<T extends Module myClass) {}
但显然,事实并非如此。
最佳答案
public static <T extends Module> T initializeModule(Class<T> myClass) {
T module = null;
try {
module = myClass.newInstance();
} catch (SecurityException e) {
throw new ModuleException(e);
} catch (InstantiationException e) {
throw new ModuleException(e);
} catch (IllegalAccessException e) {
throw new ModuleException(e);
}
return module;
}
关于java - 从其类返回泛型类型的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23363419/