私は次の方法を持っています:
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のメソッドです。
私は次の方法を持っています:
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のメソッドです。
これらのパラメーターを使用することはできません。
Java のジェネリックは、型消去と呼ばれるものを使用します。基本的に、これらTの s はすべてObject実行時になります。したがって、これTがどのクラスであるかを実際に知る必要がある場合は、オブジェクトを渡す必要があります。ClassこれはまさにparseAs実行していることです。parseAs<String>parseAs(String.class)
ただし、パラメーターexecuteはありません。Classそのため、呼び出された特殊化がわからないため、そのデータを に渡すことができませんparseAs。
解決策は、パラメーターを追加Class<T>し、呼び出しチェーンの次のレベルにパントすることです。そこでは、具体的な型が (うまくいけば) わかっています。
public <T> execute(Class<T> klass, HttpRequest request) {
...
request.execute().parseAs(klass);
}