java - 无法选择参数化类型

标签 java spring

我想创建一个休息来在服务器和客户端之间进行通信。

下面给出的构造函数:

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> result = new ResultContainData<>();
RestHelper<User, ResultContainData<Boolean>> helper = new RestHelper<>(url, user, (Class<ResultContainData<Boolean>>)result.getClass());

它对我有用。我仍在寻找更好的解决方案。

关于java - 无法选择参数化类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000227/

相关文章:

Java第二次实例化final对象

java - 使用java在单个系统上生成100个虚拟ip

spring - Spring 基于注释的验证中的和/或条件

java - BasicButtonUI 按钮不会重绘

java - JAXBElement 优于 ArrayList?

java - tomcat/lib 或 WEB-INF/lib 中不需要的 jar 文件

java - 时间戳变得与日期格式一样长

html - 如何在 thymeleaf 中使用 Select html 标签?

java - 如何在 spring boot 中从 application.properties 文件创建可配置的 Retryable maxAttempts 和 backoff

java - Spring Boot 2.1 中热重载 Thymeleaf 模板和资源包