如何将泛型类型传递给泛型方法?

How can I pass generic type to generic methode?

我有一个通用的 class,类似于下面的内容

//Un modifiable source 
public AbstractJsonWebserviceConnector<T extends JsonRequest, U>{
    public U getResponse(T request, Class<U> responseType) throws Exception {
        //Do Some stuff
    }       
}

另一个class扩展如下

public class GenericConnector<T> extends AbstractJsonWebserviceConnector<JsonRequest, T> {
   public T process(JsonRequest request, Class<T> tClass) throws Exception {
        return this.getResponse(request, tClass);
    }
}

M我可以将它转换成如下所示以避免额外的参数 Class tClass 吗?

public class GenericConnector<T> extends AbstractJsonWebserviceConnector<JsonRequest, T> {
   public T process(JsonRequest request) throws Exception {
        return this.getResponse(request, typeof(T));
    }
}

public T process(JsonRequest request, Class... tClass), 这将支持 none 或一个对象 Class

这里有一个技巧,虽然它很丑。

public class GenericConnector<T> extends AbstractJsonWebserviceConnector<JsonRequest, T> {
   public T process(JsonRequest request) throws Exception {
        return this.getResponse(request, (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
    }
}