Geo*_*Geo 0 java generics collections
我已经阅读了关于Java集合的Google Collections,Guava和静态导入文章的Beautiful代码,下面的代码片段引起了我的注意:
Map<String, Map<Long, List<String>>> map = Maps.newHashMap();
Run Code Online (Sandbox Code Playgroud)
问题是,我不明白该newHashMap方法可能返回的方式Map<String,Map<Long, List<String>>>.他们是怎么写这段代码的?什么时候成为可能?我的印象是你需要在构造函数调用中显式声明泛型参数.
您可以在方法调用上声明泛型参数,而不仅仅是整个类.如果您查看该方法的来源:
public static <K, V> HashMap<K, V> newHashMap() {
return new HashMap<K, V>();
}
Run Code Online (Sandbox Code Playgroud)
您将看到它声明了两个通用参数K和V,并将结果声明为Map.编译器足够聪明,可以从LHS表达式中找出K和V. 在你的情况下,K是String和V是Map<Long, List<String>>
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |