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