首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >新的ImmutableMap.Builder()与ImmutableMap.builder()

新的ImmutableMap.Builder()与ImmutableMap.builder()
EN

Stack Overflow用户
提问于 2021-08-09 19:06:53
回答 2查看 638关注 0票数 2

代码语言:javascript
运行
复制
private static final Map<String, String> LOCALE_FOLDER_MAP = new ImmutableMap.Builder()
        .put("a", "b")
        .build();

private static final Map<String, String> LOCALE_FOLDER_MAPP = ImmutableMap.builder()
        .put("a", "b")
        .build();

奇怪的是,ImmutableMap.builder()返回new ImmutableMap.Builder();。使用return语句替换原始代码后,上述两个代码段应该是等效的。

但事实并非如此,这让我很困惑。

有人有解释吗?

错误信息是

必需类型: Map 。提供: ImmutableMap

EN

回答 2

Stack Overflow用户

发布于 2021-08-09 19:54:55

ImmutableMap.builder是通用的。你需要为它提供论据。否则,它将推断ImmutableMap.Builder<Object, Object>作为其返回类型。

ImmutableMap.<String, String>builder()应该能做到这一点。

第一个是有效的,因为很明显,您可以将原始类型分配给参数化。

代码语言:javascript
运行
复制
ImmutableMap v1 = ...;
ImmutableMap<String, String> v2 = v1;
票数 2
EN

Stack Overflow用户

发布于 2021-08-09 19:17:51

没有回答最初的问题,但是如果使用的是Java 9(或更高版本),则可以使用Java的标准库Map.of()创建不可变的映射:

代码语言:javascript
运行
复制
private static final Map<String, String> LOCALE_FOLDER_MAP = Map.of("a", "b");
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68717346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档