ArrayList<Student> al = new ArrayList<Student>();
Iterator itr = al.iterator();
while (itr.hasNext())
{
Student st = (Student) itr.next();
System.out.println(st.rollno+" "+st.name+""+st.age);
}
Предположим, что учащийся имеет три элемента данных rollno, имя и возраст. Итак, мой вопрос в том, почему мы понижаем формулировку Student st = (Student) itr.next(); Но если мы создадим ArrayList, имеющий String как типы элементов данных, тогда нет необходимости опускать его с помощью итератора. Пожалуйста, помогите очистить мои сомнения.Интерфейс и метод итератора
IIRC 'al.iterator()' будет возвращать 'Iterator', поэтому нет необходимости в трансляции. Это необходимо только потому, что вы удалили генерики из «Итератор itr». Btw, то же самое было бы верно для ArrayList ', если вы испытываете разные результаты, у вас, скорее всего, есть другой код (например, вы используете' Iterator 'в этом случае). –
Thomas
Вы можете просто изменить 'Iterator itr' на' Iterator itr'. –
Zircon
Я считаю, что вам все равно нужно использовать: 'String st = (String) itr.next();' иначе он не будет компилироваться. Как вы предположили, что вам не нужно кастовать, если тип объекта в списке - String – SomeDude