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

标签 java generics

我有一个泛型类,如下所示

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

另一个类如下扩展它

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 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]);
    }
}

关于java - 如何将泛型类型传递给泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29488715/

相关文章:

java - java中静态变量内存什么时候释放?

java - GUI 面板操作监听器

Java List.addAll 使用集合的流而不是使用集合本身?

Java继承: Why calling a method at the parent constructor level,调用重写的子方法?

java - Java 如何解析不在方法声明中的泛型类型参数?

java - 使用 Java 泛型错误

java - 在耶拿,有没有办法通过对象查询主题?

java - 是否有任何完全通用的 Map.get() 版本,即 "V get(K key)"

c# - 如何使派生的具体类隐式转换为通用基类?

java - 如何访问通用对象的类型?