我有以下方法:
public <T> execute(HttpRequest request) {
...
// in parseAs i have to pass Class<T> how can I instantiate it from T?
request.execute().parseAs(classT);
}
PS:parseAs是来自google http client library的方法。
答案 0 :(得分:5)
你不能使用这些参数。
Java的泛型使用称为类型擦除的东西 - 基本上所有T
在运行时变为Object
。因此,如果你真的需要知道这个T
是什么类,你需要传入一个Class
对象。这正是parseAs
正在做的事情 - 调用{{1你打电话给parseAs<String>
。
但是,您的parseAs(String.class)
没有execute
参数。因此,它不知道它调用了什么专业化,因此无法将该数据传递给Class
。
解决方案是在调用链中向下一级添加parseAs
参数和punt,其中具体类型(希望)已知:
Class<T>