Почему этот фрагмент Java-кода с дженериками не компилируетсяJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему этот фрагмент Java-кода с дженериками не компилируется

Сообщение Anonymous »

Test.java:

Код: Выделить всё

import java.util.ArrayList;
import java.util.Stack;
import java.util.Iterator;

class Wrapper {
public T content;
public ArrayList children;
}

public class Test {
public static void testing (Stack stack) {
Wrapper test = stack.pop();

Iterator itr = test.children.iterator();
while (itr.hasNext()) {
Wrapper item = itr.next();
System.out.println(item.content);
}

ArrayList canCompile = test.children;
for (Wrapper child : canCompile) {
System.out.println(child.content);
}

for (Wrapper child : test.children) {
System.out.println(child.content);
}
}
}
Ошибка:

Код: Выделить всё

Test.java:25: error: incompatible types
for (Wrapper child : test.children) {
^
required: Wrapper
found:    Object
Note: Test.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Мой вопрос не в том, как заставить этот код работать. Но скорее, почему этот код в его нынешнем виде не компилируется. В приведенном выше коде нестандартным образом используются дженерики, а также выдаются предупреждения при компиляции. Однако я все равно ожидаю, что у компилятора будет достаточно информации для компиляции приведенного выше фрагмента кода.

Подробнее здесь: https://stackoverflow.com/questions/215 ... nt-compile
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»