要使用Spring RestTemplate的泛型类型,我们需要使用ParameterizedTypeReference(无法获得通用的ResponseEntity <T>,其中T是泛型类"SomeClass <SomeGenericType>")
假设我有一些课
public class MyClass {
int users[];
public int[] getUsers() { return users; }
public void setUsers(int[] users) {this.users = users;}
}
Run Code Online (Sandbox Code Playgroud)
还有一些包装类
public class ResponseWrapper <T> {
T response;
public T getResponse () { return response; }
public void setResponse(T response) {this.response = response;}
}
Run Code Online (Sandbox Code Playgroud)
所以如果我想做这样的事情,一切都好.
public ResponseWrapper<MyClass> makeRequest(URI uri) {
ResponseEntity<ResponseWrapper<MyClass>> response = template.exchange(
uri,
HttpMethod.POST,
null,
new ParameterizedTypeReference<ResponseWrapper<MyClass>>() {});
return response;
}
Run Code Online (Sandbox Code Playgroud)
但是当我试图创建上述方法的通用变体时......
public <T> ResponseWrapper<T> makeRequest(URI uri, Class<T> …Run Code Online (Sandbox Code Playgroud)