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

时间:2015-04-07 09:53:45

标签: 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);
    }
}

MCan我将其转换为类似下面的内容,以避免额外的参数Class&lt; T&gt; tClass?

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

2 个答案:

答案 0 :(得分:1)

这是一个技巧,虽然它很难看。

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

答案 1 :(得分:0)

public T进程(JsonRequest请求,Class ... tClass),这将支持Class或者一个对象