我面临泛型的问题。
下面是我使用泛型的一个类:
public class TokenServerResponse<D> {
private String responseCode;
private String responseMessage;
private D responseData;
....
在这里,我们的类:TokenServerACK
使用D
进行参数化。
我想在我们的一种方法中指定类型,如下所示:
protected ResponseEntity<TokenServerResponse<DigestResponseData>> digest(long globalMerchantUId, String expirydate, String pan, boolean updateExpiryDate) throws Exception {
DigestRequest digestRequest = new DigestRequest();
digestRequest.setGlobalMerchantUid(globalMerchantUId);
digestRequest.setExpiryDate(expirydate);
digestRequest.setPan(pan);
digestRequest.setUpdateExpiryDate(updateExpiryDate);
return restTemplate.postForEntity("/digest", digestRequest, TokenServerResponse<DigestResponseData>.class);
}
但是,我遇到以下编译器错误:无法从参数化类型中选择。
如何使用类型参数D?我也试过铸造,但没有成功。我做错了什么?
下面是如何调用digest方法:
ResponseEntity<TokenServerResponse<DigestResponseData>> digestResponseEntity = digest(823, "1505", pan, true);
这里:
return restTemplate.postForEntity("/digest", digestRequest, TokenServerResponse<DigestResponseData>.class);
如果您的方法希望有一个类值作为最后一个参数,那么您只能为它提供一个类。无法提供泛型类型的类<强制转换是不可避免的,但如果您将您的TokenServerResponse类更改为同时使用继承。
public abstract class TokenServerResponse<T> {
private String responseCode;
private String responseMessage;
private T responseData;
public T getResponseData() {
return responseData;
}
}
public class TokenServerResponseDigestResponseData extends TokenServerResponse<DigestResponseData> {
}
现在,您可以在此处使用TokenServerResponseDigestResponseData类:
return restTemplate.postForEntity("/digest", digestRequest, TokenServerResponseDigestResponseData.class);
当您这样做时:
TokenServerResponseDigestResponseData instance = ...
DigestResponseData data = instance.getResponseData();
你不需要任何石膏。
当然,如果您没有十几个类来使它们从TokenServerACK
类继承,并且您希望使用客户端代码中的特定类型,那么这个解决方案很有趣。
在您的情况下,需要Digest响应数据
进行处理,因为您的泛型类型不依赖于特定类型,而是依赖于Object类型,因此您应该以这种方式一次强制转换:TokenServerACK
到TokenServerACK
我试图模拟以进行测试: ClassA ClassA=Mockito。模拟(A类); 莫基托。when(classA.void(Mockito.any)(ClassB 但我有关于“B类”的信息 ClassA无效:ClassA。void(@NotNull ClassB mockito-core-4.0.0,springboot,maven 知道怎么解决吗?
我想创建一个rest来在服务器和客户端之间进行通信。 下面给出的构造函数: 对于普通类型,我可以执行以下操作: 如何传递泛型类型,如: 以下代码无效: 我遇到一个运行时错误:无法强制转换为ParameteredType。
我对这个flutter简单图表代码有问题。在我尝试运行代码时显示此错误。有人能帮我吗...... 参数类型'List 这是代码示例:
我对弗利特和我是新手;我一直在尝试开发一款带有PHP API后端的应用程序。在无数的答案和在线研究中,我无法找到解决我所面临问题的方法。我希望有人能告诉我我做错了什么。 我试图从API中获取数据,并将其显示在卡中。下面是我的代码: 希望能得到一些帮助。非常感谢。
问题内容: 我在弄清楚以下RHS中期望使用什么类型参数时遇到问题 为什么副本不合法? 问题答案: 具体参数化类型的数组固有地被破坏。请记住,数组是协变的,数组类型检查是运行时操作。在运行时,所有泛型都已被擦除,因此Array Store检查无法从中分辨出来。 泛型的基本约定是:“我,编译器,保证如果编写的代码不生成警告,则在运行时永远不会得到类强制转换异常。” 编译器也不能向您保证,如果在数组中放
你好,我在小部件上的以下代码中出错 参数类型'List 这是我的代码 我的代码与上面的图表插件不兼容吗?如何解决这个问题?