gpt4 book ai didi

java - 涉及集合和集合的类型不匹配

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:21 24 4
gpt4 key购买 nike

我正在尝试编写一个以 Map 作为字段的类。该字段如下:

Map<String, Collection<String>> courses;

在构造函数中,我必须具有以下形式的字段:

Map<String, Set<String>;

根本不改变字段。当我尝试使用该集初始化字段时出现错误。有人可以告诉我为什么或者在不改变原始字段的情况下该怎么做吗?

最佳答案

尽管Set<String>实际上是 Collection<String> 的子类型,一个Map<String, Set<String>>不是 Map<String, Collection<String>> 的子类型。事实上,它们是完全不同的类型,您不能将一种类型分配给另一种类型。

幸运的是,Map接口(interface)定义了 putAll method ,它具有以下签名:

void putAll(Map<? extends K,? extends V> m)

这意味着putAll方法接受一个映射,该映射的键和值可能分别是其自身键和值类型的子类型。

因此,在您的示例中,您可以执行以下操作:

public class YourClass {

private final Map<String, Collection<String>> courses = new HashMap<>();

public YourClass(Map<String, Set<String>> courses) {
this.courses.putAll(courses);
}
}

您只需确保courses属性在调用 putAll 之前已实例化就在上面。

关于java - 涉及集合和集合的类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43358841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com