这是我正在查看的代码 (使用谷歌的ImmutableMap)。
这是什么意思?做这个的意义是什么?
ImmutableMap.<String,String>of();
这是什么意思?做这个的意义是什么?
Class.<GenericType>methodName()?
ImmutableMap
是一个带有两个类型参数K
和V
的通用类。在本例中,这个语法为这两个参数提供了具体的值,都是String
。
因此,上面的代码返回一个空的String
到String
的映射表。
参见JLS 15.2,其中包括方法调用:
MethodInvocation: TypeName . NonWildTypeArguments Identifier ( ArgumentListopt )
这里的类型参数是String
和String
。
当类型推断无法工作时,它用于指定通用类型,例如:
Map<String, String> m = ImmutableMap.of();
Map<String, String> m2 = ImmutableMap.<String, String>builder().build();
它对方法返回值的泛型类型进行参数化。
ArrayList<String>
和ArrayList<Integer>
是同一类,所以转换并没有捕获到这些不兼容的类型)。提供泛型类型可以让编译器在编译时确保类型安全。 - DunesMap
,你可以进行强制转换(出于向后兼容性的原因)。但你是正确的,你不能将一个参数化类型强制转换为另一个。 - Dunes