Вы хотите что-то вроде этого:
private static String newName(Object object,
HashMap<? extends Object, Integer> nameIndexMap) {
....
}
или (как указано в комментариях)
private static String newName(Object object,
HashMap<?, Integer> nameIndexMap) {
....
}
Это помешает вам поместить что-либо в карту, потому что вы не можете гарантировать, что получите правильный ключ - но вы можете получить вещи из карты и гарантировать, что они буду целыми числами.
Обратите внимание, что эта версия не делает метод универсальным - что означает, что он проще, но не обеспечивает такую же безопасность типов, как версия Питера, поскольку вы не можете гарантировать, что object
имеет правильный тип. У каждого подхода есть свои плюсы и минусы - используйте все, что наиболее уместно, исходя из основ метода. (Если вам нужно поместить запись в карту, подход Питера определенно лучше.)