Общая специализация наряду со значениями типов является проецируемой функцией будущих JVM; ссылку на страницу проекта Valhalla здесь.
Теперь, из того, что я понимаю, тогда стало бы возможно объявить:
final List<int> myList = new ArrayList<>(); // for instance
Но тогда List
определяет другой метод .remove()
в дополнение к тому, который определен в интерфейсе Collection
, который принимает int
в качестве аргумента, который является индексом в удаляемом списке; поэтому в настоящее время содержание List
в приведенном ниже примере:
final List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.remove(2);
будет [1, 2]
, а не [1, 3]
(выбирается наиболее конкретная перегрузка).
Однако, если в будущем мы сможем объявить List<int>
, у нас будет проблема: какая перегрузка метода remove
будет выбрана?