Как здесь выводится универсальный тип?
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>();
}
Я видел похожий код в google guava (как фабричные методы) для создания экземпляров Hashmap без упоминания обобщенных типов. Я не понимаю, как обобщение выводится вышеуказанной программой. Я имею в виду, как функция getHashMap может понимать тип карты, так как я не передаю никакой информации о типе функции.