gpt4 book ai didi

java - 我如何在 Java 中放入三维 Liskov map ?

转载 作者:行者123 更新时间:2023-11-29 03:31:19 25 4
gpt4 key购买 nike

我正在尝试将一个 Map 放入另一个 Map。

Map<String, ? extends Map<String, String>> test = new HashMap<String, HashMap<String, String>>();
Map<String, String> temp = new HashMap<String, String>();
test.put("foobar", temp);

但是我收到了这个:

类型 Map 中的方法 put(String, capture#1-of ? extends Map) 不适用于参数 (String, Map)

不是 Map<String,String>? extends Map<String,String>相同?

最佳答案

外层Map test使用上部通配符值可防止添加值,而 Map temp没有。

你可以使用

Map<String, Map<String, String>> test = new HashMap<String, Map<String, String>>();
^ ^
|-----changed LHS type--- must be matched with -|

有界通配符语法 Map<String, ? extends Map<String, String>>表示 Map使用扩展 Map 的某种未知类型的值.编译器会阻止除 null 之外的所有值正在添加。

另请注意,右侧的值有一个 Map输入而不是 HashMap因为泛型不是协变的,这意味着右侧赋值的泛型类型必须与左侧声明中的泛型类型完全匹配。

关于java - 我如何在 Java 中放入三维 Liskov map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18134882/

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