Объединение необработанных типов и общих методов

Вот вопрос, этот первый список кода компилируется просто отлично (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?

Ответы на вопрос(5)

Ваш ответ на вопрос