java - 如何做泛型类 T 的 "new"扩展 AbstractClass (JAVA)

标签 java class generics instance

我正在尝试实例化一个名为“T”的泛型类来扩展“AbstractLauncher”,但我不明白我在谷歌上看到的所有主题。你可以帮帮我吗 ? 我有几个名为 ConcretXLauncher 的类,并且我的 MainClass“ConcretXLauncher”上没有,而只有可以扩展 AbstractLauncher 的泛型...

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”论点提出什么?

最佳答案

以下是如何定义 newInstance 方法并调用它的示例:

public class Test {
  public static <T> T newInstance(Class<T> clazz) throws InstantiationException, IllegalAccessException {
    return clazz.newInstance();
  }

  static class A {

    @Override
    public String toString() {
      return "hello";
    }
  }

  public static void main(String[] args) throws InstantiationException, IllegalAccessException {
    A a = newInstance(A.class);
    System.out.println(a);
  }
}

关于java - 如何做泛型类 T 的 "new"扩展 AbstractClass (JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16307940/

相关文章:

java - 具有通用异常的 lambda 的类型推断选择 Exception 而不是 RuntimeException?

java - 在java中使用WatchService检测文件完成情况

python-2.7 - Python OOP 与实例变量的使用相关

java - java类和jar的区别

具有通用版本 8 和 17 的 Java 实例类型

java - 为什么父类(super class)泛型类型不被删除/转换

c# - 我可以将此方法变成通用方法吗?

Java 数组窄转换规则

java - 使用 ActionListener 使用 Formatter 写入文件(JAVA)时出错

java - “找不到或加载主类”是什么意思?