如何在这里推断泛型类型?

Emi*_*mil 8 java generics

public static void main(String[] args) {
    Map<String, Map<Long, List<String>>> map = getHashMap();
}

static <K,V> Map<K,V> getHashMap()
{
    return new HashMap<K, V>();
}
Run Code Online (Sandbox Code Playgroud)

我看到在谷歌番石榴类似的代码(如工厂方法)作出的Hashmap的情况下,不提一般types.I不明白是怎么一般是越来越受上述program.I推断意味着怎能功能getHashMap理解的类型因为我没有将任何类型的信息传递给函数.

Tom*_*ine 6

getHashMap函数不必推断类型.在调用站点,Java语言规范要求javac推断类型一致(15.12.2.7基于实际参数推断类型参数).

我相信当前的计划(仍然)是JDK7支持钻石操作符,因此这种方法也可以使用new,尽管有一些明显无意义的语法.

Map<String, Map<Long, List<String>>> map = new HashMap<>();
                                                      ^^diamond
Run Code Online (Sandbox Code Playgroud)