无法选择参数化类型 [英] cannot select Parameterized Type

查看:259
本文介绍了无法选择参数化类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to create a rest to communicate between server and client.

以下给出的构造函数:

public class RestHelper<I, R> {
    public RestHelper(String url, I input, Class<R> output){
        ResponseEntity<R> responseEntity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, output );
    }
}

对于普通类型,我可以这样做:

For normal type, I can do:

RestHelper<User, Result> helper = new RestHelper<>(url, user, Result.class);

如何传递通用类型,例如:

How can I pass a generic type, like:

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.

I got a runtime error: cannot cast to ParameterizedType.

推荐答案

我找到了解决方案.

ResultContainData<Boolean> result = new ResultContainData<>();
RestHelper<User, ResultContainData<Boolean>> helper = new RestHelper<>(url, user, (Class<ResultContainData<Boolean>>)result.getClass());

它正在为我工​​作.我仍在寻找更好的解决方案.

It's working for me. I am still looking for a better solution.

这篇关于无法选择参数化类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆