Я написал простую программу, использующую общий тип. Однако простой пример ведет себя по-разному в разных версиях JDK.
Простой код выглядит следующим образом:
import java.util.List;
public class GenericTypes {
public static String method(List<String> list) {
System.out.println("Method method(List<String> list) is invoked.");
return "";
}
public static int method(List<Integer> list) {
System.out.println("Method method(List<Integer> list) is invoked.");
return 0;
}
}
Сценарий №1 == > на JDK 1.7 появляется ошибка компиляции
`Method method(List<String>) has the same erasure method(List<E>) as another method in type GenericTypes.`
Сценарий № 2 == > на JDK 1.6 или 1.5 отсутствует ошибка компиляции.
Снимок экрана для кода и вывода в консоли выглядит следующим образом:
Как известно, Generic Type вводится с JDK 1.5. Однако, с помощью простого примера, он ведет себя по-разному в разных версиях JDK.
Вот мои вопросы:
Q1 == > Какие изменения были внесены в более высокую версию JDK (например, JDK 1.7) для того, чтобы сделать поведение типа Generic по-разному в некоторых сценариях, таких как приведенный выше простой пример?
Q2 == > Ошибка компиляции лучше, чем ошибка компиляции в приведенном выше примере?
Пожалуйста, помогите мне с этим. Большое вам спасибо заранее.