gpt4 book ai didi

java - 为什么我不能创建字符串和通用对象的映射

转载 作者:搜寻专家 更新时间:2023-10-30 21:24:24 25 4
gpt4 key购买 nike

我正在尝试做这样的事情

  final Map<String, ? extends Object> params = new HashMap<String, ? extends Object>();

但是 java 编译器提示“无法实例化 HashMap() 类型;

它有什么问题..?

最佳答案

? extends Object是一个通配符。它代表“某种未知类型,我们唯一知道的是它是 Object 的子类型”。它在声明中很好,但你不能实例化它,因为它不是实际类型。尝试

final Map<String, ? extends Object> params = new HashMap<String, Object>();

因为你不知道?是什么类型是你不能给它分配任何东西吗?自 Object是一切的父类(super class)型,params可以分配给两者的引用HashMap<String, Integer>以及HashMap<String, String> ,除此之外。 String不是 Integer也不是 Integer一个String .编译器无法知道哪个 params可能是,所以在 params 中放入任何内容都不是有效操作.

如果你想能够把<String, String>params然后声明它。例如,

final Map<String, Object> params = new HashMap<String, Object>();
params.put("a", "blah");

有关该主题的良好介绍,请查看有关泛型的 Java 语言教程,尤其是。 this page以及它之后的那个。

关于java - 为什么我不能创建字符串和通用对象的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6954509/

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