Необработанные типы не проверяются. Используйте
LinkedList<Integer> li2 = new LinkedList<Integer>(li);
Вы никогда не должны использовать необработанные типы в новом коде. Это предусмотрено только для обратной причины совместимости. См. JLS 4.8
Для облегчения взаимодействия с неуниверсальным унаследованным кодом также можно использовать в качестве типа стирание (§4.6) параметризованного типа (§4.5). Такой тип называется необработанным типом.
Использование необработанных типов разрешено только в качестве уступки совместимости устаревшего кода. Использование необработанных типов в коде, написанном после введения универсальности в язык программирования Java, настоятельно не рекомендуется. Возможно, что будущие версии языка программирования Java запретят использование необработанных типов.
Акцент был их, а не мой.
Вы добавили исправление в исходный вопрос, означающее, что вы хотите работать именно с необработанными типами. Кажется, это противоречит цели безопасности типов, обеспечиваемой обобщениями, но вы всегда можете использовать List<Object>
для достижения этой цели. Он больше не сырой, поэтому он гарантированно сработает в будущем, хотя на самом деле он не обеспечивает никакой безопасности типов.
В зависимости от контекста вы также можете сделать List<?>
для неограниченных подстановочных знаков.