java - 从其类返回泛型类型的实例

标签 java generics types instantiation

我的类(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/

相关文章:

java - swt浏览器在新窗口中显示pdf

java - 同步线程以按顺序执行操作

Java 每 30 秒运行一次方法

具有 1 个类型参数和 2 个约束的 Java 泛型

c++ - 为从其模板成员函数调用中已知的类型创建新容器的类

Java错误eclipse列表排序

Java ObjectMapper.readValue 将泛型类型转换为 LinkedHashMap

基类中的 C# 泛型类型

python读取错误的类型

Java 和动态类型