Предупреждение выдается за new ArrayList();
, так как вы создаете ArrayList
объект без шаблонов.Даже если вы предоставили универсальный для ссылочной переменной, есть случаи, когда вы можете добавить другие, чем объекты класса String.Как:
Вы создаете как: Collection<String> c = new ArrayList();
.Поскольку ссылка имеет универсальный тип String
, компилятор проверит только ссылку и не допустит ничего, кроме строки.Но в случае:
Collection<Integer> intColl = (Collection)c;
В этом случае вы даже можете добавить целое число в коллекцию.Вот почему он дает предупреждение.