如何解决调用AWS Batch Meter通用API
我必须调用通用的AWS Batch Meter API。当我调用此函数时,出现错误。请帮助如何调用通用API
public <T> Optional<T> getValueForField(String fieldName,Class<T> clazz) {
byte var4 = -1;
switch(fieldName.hashCode()) {
case -1532767274:
if (fieldName.equals("Results")) {
var4 = 0;
}
break;
case 743387085:
if (fieldName.equals("UnprocessedRecords")) {
var4 = 1;
}
}
switch(var4) {
case 0:
return Optional.ofNullable(clazz.cast(this.results()));
case 1:
return Optional.ofNullable(clazz.cast(this.unprocessedRecords()));
default:
return Optional.empty();
}
}
public List<UsageRecordResult> results() {
return this.results;
}
通过API调用
batchMeterUsageResponse.getValueForField(RESULT,(Class<List<UsageRecordResult>>) new ArrayList<>().getClass());
我遇到错误:
Error:(98,175) java: incompatible types: java.lang.Class<capture#1 of ? extends java.util.ArrayList> cannot be converted to java.lang.Class<java.util.List<software.amazon.awssdk.services.marketplacemetering.model.UsageRecordResult>>
解决方法
TL; DR —如果我对您的代码意图的假设是正确的,则the simplest solution is demonstrated here…
...
Optional< List > wtTF = batchMeterUsageResponse.getValueForField( RESULTS,List.class );
...
要执行上面显示的代码,请单击绿色的 开始 按钮at the top of this IDE。
详细答案
BatchMeterUsageResult
有一个getResults()
方法和一个getUnprocessedRecords()
方法,看起来就像您在问题中使用的方法一样。因此,我上面建议的修复程序假设您的示例代码旨在返回 List<UsageRecordResult>
或 List<UsageRecord>
;取决于 fieldName.hashCode
的值。
„ 我遇到错误:”
Error:(98,175) java: incompatible types: java.lang.Class<capture#1 of ? extends java.util.ArrayList> cannot be converted to java.lang.Class<java.util.List<software.amazon.awssdk.services.marketplacemetering.model.UsageRecordResult>>
该错误消息告诉您,您尝试从一种类型的 Class<List<E>>
转换为另一种类型的 Class<List<E>>
失败。
编译器知道 Class
的 new ArrayList<>().getClass()
类型为 Class<capture#1 of ? extends java.util.ArrayList>
。您正在尝试将其投射到 Class<List<UsageRecordResult>>
。
因为两种 Class
类型不兼容,所以编译器无法进行转换。它们不兼容的根本原因是因为 {List<UsageRecordResult>
不符合以下条件: extends java.util.ArrayList
。请记住:接口 List<E>
是 ArrayList<E>
的超类。如您所知,不可能将超类分配给子类。
但这只是代码问题的第一部分。其他问题的细节可能不如上述使代码编译的解决方案那么有趣。
如果我对您的代码意图的假设不正确,那么请编辑您的问题,并提供对代码实际意图的更清晰的解释? TIA。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。