Как работает вывод типа Java?

Может кто-нибудь объяснить, как работает следующий синтаксис?

public static <K, V> HashMap<K, V> getMap(){
    return new HashMap<K, V>();
}

Например, если этот метод был реализован в собственном неиспользуемом классе утилит, его можно использовать как статический метод фабрики для создания экземпляров карты, верно?

Map<Integer, String> myMap = MyUtil.getMap();

тогда вернул бы новый HashMap с целочисленными ключами и значениями String для его записей, я прав? Если да, то как типы ключа и входа карты реализуются компилятором и виртуальной машиной?

Я был бы очень признателен, если бы кто-нибудь мог объяснить, как это делает Java.

Ответы на вопрос(1)

Ваш ответ на вопрос