首页 > 解决方案 > 如何将类级别泛型传递给方法

问题描述

我有一个接受泛型参数的类

class MyClass<D> {

  public void myMethod() {

   }

}

现在我有一个具有以下签名的外部 API 方法?

public static <T> T apiMethod​(String str, java.lang.Class<T> classOfT) {
}

我想要类似下面的东西,但我得到了编译错误

class MyClass<D> {

      public void myMethod(String str) {
            ApiClass.apiMethod​(str,D); 

       }

 }

知道如何实现这一目标吗?

标签: javagenerics

解决方案


你不能那样做。您能做的最好的事情就是将责任交给调用者,让他们将类传递给构造函数。

class MyClass<D> {

   private Class<D> clazz;

   MyClass(Class<D> clazz) { 
       this.clazz = clazz;
   }

   public void myMethod() {
       ApiClass.apiMethod​(str, clazz); 
   }
}

推荐阅读