我感兴趣的是为什么这段代码产生语法错误,说明ImmutableMap无法解析为一个类型:
ImmutableMap<String, String> advice = ImmutableMap<String, String>.builder()
.put(KEY1, VAL1)
.put(KEY2, VAL2)
.build();
Run Code Online (Sandbox Code Playgroud)
虽然此代码按预期工作:
ImmutableMap<String, String> advice = ImmutableMap.<String, String>builder()
.put(KEY1, VAL1)
.put(KEY2, VAL2)
.build();
Run Code Online (Sandbox Code Playgroud)
这个时期不是我的心理模型应该去的地方,我希望有人可以解释为什么这个时期的"方法方面".我正在使用Guava的ImmutableMap,但它并不完全相关我不认为.我认为它与泛型有关,但我不确定是什么,我不知道如何寻找更好的答案,因为我不知道这个概念会被称为什么.
编辑:作为参考,ImmutableMap有这一行builder()
public static <K, V> Builder<K, V> builder() {
return new Builder<K, V>();
}
Run Code Online (Sandbox Code Playgroud)
builder()是一个静态方法,它具有与之关联的泛型类型,而不是它所定义的类.它将类似于
public static <K,V> ImmutableMap.Builder<K,V> builder() { ... }
Run Code Online (Sandbox Code Playgroud)
注意:<K, V>这里没有与类的泛型类型有任何关系.(不必是通用的)