List list = new ArrayList<String>() ; // WARNING!!!
Опасное Список относится к безопасному ArrayList
list.add(1) ; // WARNING!!!
Целое число (INT 1 преобразуется в целое Autoboxing) не строка добавляется в список
Integer hello = (Integer) list.get(0) ;
Кастинг необходим, так как небезопасный список ca n содержит что угодно.
System.out.println(hello);
Integer.toString() называется
Когда линия list.add (1) выполняется, не 1 добавляется к ArrayList (типа String)?
Да. Целое число было добавлено в ArrayList, который должен содержать String.
Если да, то почему это разрешено?
Обратная совместимость. Java должна поддерживать предварительные коды.
Список списков; означает, что он небезопасен, поэтому вы можете сделать что-либо с ним, и упомянутый ArrayList() должен это терпеть.
Мораль: Не игнорируйте предупреждения компилятора, в противном случае Integer может войти в массив ArrayList, который должен содержать строки.
Что дает ваш println? – wazaminator
Протестировано; Он печатает 1^ –
Какую IDE вы используете, чтобы написать этот код? А компилятор компилировать его? Мне кажется странным, что ваш код даже компилируется. – nikkatsa