【发布时间】:2014-11-18 17:23:18
【问题描述】:
我想创建一个休息来在服务器和客户端之间进行通信。
下面给出的构造函数:
public class RestHelper<I, R> {
public RestHelper(String url, I input, Class<R> output){
ResponseEntity<R> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, output );
}
}
对于普通类型,我可以这样做:
RestHelper<User, Result> helper = new RestHelper<>(url, user, Result.class);
如何传递泛型类型,例如:
ResultContainData<Boolean>
下面的代码不起作用:
ResultContainData<Boolean> result = new ResultContainData<>();
RestHelper<User, ResultContainData<Boolean>> helper = new RestHelper<>(url, user, (Class<ResultContainData<Boolean>>) ((ParameterizedType) result.getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
我遇到运行时错误:无法转换为 ParameterizedType。
【问题讨论】:
-
与其告诉我们它“不工作”,不如发布编译器错误。我认为问题出在
ResultContainData<Boolean>.class,对吧? -
正如@John 所写,没有 ResultContainData
.class 这样的东西,试试 ResultContainData.class。 -
是的,编译错误是cannot select Parameterized Type