You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

报错:无法将Map.of结果赋值给HashMap,能否用其初始化HashMap?

用Map.of初始化HashMap的问题

报错原因

Map.of()返回的是Java内置的不可变Map实现类(并非HashMap),而HashMap是Map接口的一个可变实现类。Java的类型系统不允许将非HashMap类型的Map实例直接赋值给HashMap类型的引用,这就是你看到类型不匹配报错的原因。

可行的初始化方式

如果你想用Map.of()来初始化HashMap,可以通过以下两种方式:

  • 利用HashMap的构造器接收Map参数:
HashMap<String, String> hashMap = new HashMap<>(Map.of("name", "Murife"));
  • 使用Java 10+提供的HashMap.copyOf()方法:
HashMap<String, String> hashMap = HashMap.copyOf(Map.of("name", "Murife"));

关于Map.of()的说明

Map.of()的设计目的是快速创建不可变的Map实例,它可以直接赋值给Map接口引用,但并不直接返回HashMap或其他具体的可变Map实现类。如果业务场景不需要修改Map内容,直接用Map<String, String> map = Map.of("name", "Murife")就足够;如果需要可变的HashMap实例,就用上面提到的两种转换方式。

内容的提问来源于stack exchange,提问作者Emmanuel Njorodongo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:30:49