Объединение необработанных типов и общих методов
Вот вопрос, этот первый список кода компилируется просто отлично (JDK 1.6 | JDK 1.7):
ArrayList<String> a = new ArrayList<String>();
String[] s = a.toArray(new String[0]);
Однако, если я объявлюList
ссылка как необработанный тип:
ArrayList a = new ArrayList();
String[] s = a.toArray(new String[0]);
Я получаю сообщение об ошибке компилятораString[]
требуется, ноObject[]
был найден.
Это означает, что мой компилятор интерпретирует универсальный метод как возвращающийObject[]
несмотря на получениеString[]
в качестве аргумента.
Я дважды проверилtoArray(myArray)
подпись метода:
<T> T[] toArray(T[] a);
Поэтому это параметризованный метод, чей параметр типа<T>
не имеет никакого отношения к списку (т.е.<E>
).
Я понятия не имею, как использование необработанного типа влияет на оценку параметризованных методов с использованием независимых параметров типа.
Does anyone has any idea why this code does not compile? Does anybody knows any reference where this behavior is documented?