ska*_*red 4 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);
}
Run Code Online (Sandbox Code Playgroud)
PS:parseAs是来自谷歌http客户端库的方法.
你不能用这些参数.
Java的泛型使用一种叫做类型擦除-基本上所有TS ^成为Object在运行时.所以,如果你真的需要知道这T是什么类,你需要Class传入一个对象.这正是parseAs做什么 - 调用parseAs<String>,你打电话parseAs(String.class).
但是,你execute没有Class参数.因此,它不知道它调用了什么专业化,因此无法将数据传递给parseAs.
解决方案是Class<T>在调用链中向下一级添加一个参数和punt,其中具体类型(希望)已知:
public <T> execute(Class<T> klass, HttpRequest request) {
...
request.execute().parseAs(klass);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |