Вы не можете с этими параметрами.
Обобщения Java используют так называемое стирание типов - в основном все эти T
становятся 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);
}