Дженерики Java реализованы с использованием тип стирание. Это означает, что если у меня есть метод:
public void setMapParam(Map<String, Integer> p) { ... }
после компиляции, он окажется в .class как:
public void setMapParam(Map p) { ... }
У меня есть файл JAR с универсальными классами и методами, подобными приведенным выше. Это просто двоичный файл. Никаких исходников нет ничего.
Но когда я использую его в коде, Автоматическое завершение Eclipse дает мне setMapParam (Map
, хотя в двоичном виде это похоже на setMapParam (Map p)
.
Как теперь Eclipse имеет тип ( Map
), даже если подпись метода была удалена (в Map
)? Или мне что-то не хватает?