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
发布于 2021-08-09 19:54:55
ImmutableMap.builder
是通用的。你需要为它提供论据。否则,它将推断ImmutableMap.Builder<Object, Object>
作为其返回类型。
ImmutableMap.<String, String>builder()
应该能做到这一点。
第一个是有效的,因为很明显,您可以将原始类型分配给参数化。
ImmutableMap v1 = ...;
ImmutableMap<String, String> v2 = v1;
发布于 2021-08-09 19:17:51
没有回答最初的问题,但是如果使用的是Java 9(或更高版本),则可以使用Java的标准库Map.of()创建不可变的映射:
private static final Map<String, String> LOCALE_FOLDER_MAP = Map.of("a", "b");
https://stackoverflow.com/questions/68717346
复制相似问题