如何从T?</t>实例化Class <t>

时间:2011-11-04 04:52:53

标签: java google-api-java-client

我有以下方法:

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的方法。

1 个答案:

答案 0 :(得分:5)

你不能使用这些参数。

Java的泛型使用称为类型擦除的东西 - 基本上所有T在运行时变为Object。因此,如果你真的需要知道这个T是什么类,你需要传入一个Class对象。这正是parseAs正在做的事情 - 调用{{1你打电话给parseAs<String>

但是,您的parseAs(String.class)没有execute参数。因此,它不知道它调用了什么专业化,因此无法将该数据传递给Class

解决方案是在调用链中向下一级添加parseAs参数和punt,其中具体类型(希望)已知:

Class<T>