【问题标题】:java: incompatible types: inference variable T has incompatible bounds equality constraints: lower bounds: java.util.List<> for adding fieldjava:不兼容的类型:推理变量 T 具有不兼容的边界等式约束:下限:java.util.List<> 用于添加字段
【发布时间】:2021-02-09 10:37:13
【问题描述】:

您好,我想在 HashMap 中添加一个字段,但出现错误

“java:不兼容的类型:推理变量 T 具有不兼容的边界等式约束:java.util.Map下界:java.lang.Object”而我没有看看为什么?

metadataMap.put(review.getField(), metadataMap.get(review.getField()).stream()
                            .filter(suggestion -> review.getTerm() != null && review.getTerm().equals(suggestion.get(Constants.Review.TERM)))
                            .map(termInfo -> termInfo.put(Constants.STATUS, review.getStatus()))
                            .collect(Collectors.toList()));

这是关于我的代码的其他信息

private void removeReviewFromSuggestionsOrDetails(ContainerModel container, ReviewModel review, String field, String instance)
        throws ApiException {
    Map<String, List<Map<String, Object>>> metadataMap = (Map<String, List<Map<String, Object>>>) container.get(field);

我应该在那里使用地图还是其他什么?添加我的新字段状态

【问题讨论】:

标签: java hashmap


【解决方案1】:

看着这么小的代码示例,我无法在这里重现问题并确定我的解决方案。

但是,我建议您查看您的“类型”。

在您的“removeReviewFromSuggestionsOrDetails”函数中:

Map<String, List<Map<String, Object>>> metadataMap = 

声明时,您是在说:

-这是一个接收 Strings 作为 Keys

的 Map

-并接收 Map 列表作为值

因此,要正确使用“put(Key, Values)”方法,您应该将 Map 接收的类型与您在方法中用作参数的类型相匹配。

应该做的是:

metadataMap.put(Keys, Values) should be metadataMap.put(String, List<Map<String, Object>>)

你正在做的是:

metadataMap.put(String, Map<String, List<Map<String, Object>>>)

您现在看到问题了吗?你给 put() 方法一个 String 作为 Key 和一个 Map 作为 Value。

但是,您声明 metadataMap 接收一个字符串作为键和一个映射列表作为值。

我想这会解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多