Невозможно привести итератор - PullRequest
2 голосов
/ 17 июня 2011

Здравствуйте, у меня такие же проблемы с получением данных из коллекции с помощью итератора:

У меня есть класс с именем DatabaseTableFieldUIData, у которого есть метод getFieldName.

В другом классе у меня есть коллекция DatabaseTableFieldUIDatas, как это:

Коллекция столбца Data

Теперь я хочу пройти через эту коллекцию с помощью итератора, чтобы получить все имена полей с помощью метода getFieldName. Поэтому я попробовал что-то вроде этого:

Iterator<DatabaseTableFieldUIData> it = columnData.iterator();
for (int i = 0; i < columnData.size(); i++)
        String fieldName = it.getFieldName();

но это не позволяет мне вызывать метод getFieldName из итератора, поэтому я попытался привести итератор к DatabaseTableFieldUIData:

Iterator<DatabaseTableFieldUIData> it = columnData.iterator();
    DatabaseTableFieldUIData aux;
    for (int i = 0; i < columnData.size(); i++)
        aux = (DatabaseTableFieldUIData) it;

И я получаю ошибку «Невозможно привести из Итератора к DatabaseTableFieldUIData», не знаю, что делать сейчас: (

Спасибо за помощь.

Ответы [ 3 ]

4 голосов
/ 17 июня 2011

Вам нужно вызвать it.next(), чтобы получить объект, на который итератор "указал".

См. http://download.oracle.com/javase/1,5.0/docs/guide/language/foreach.html для руководства по использованию итераторов.

3 голосов
/ 17 июня 2011

Итератор не является DatabaseTableFieldUIData Это буквально миллион примеров правильного использования Итератора.

Если вы используете цикл для каждого, вам вообще не нужен Итератор.

for(DatabaseTableFieldUIData aux: columnsData) {
1 голос
/ 17 июня 2011

Попробуйте это:

Iterator<DatabaseTableFieldUIData> it = columnData.iterator();
while(it.hasNext()){
    DatabaseTableFieldUIData data = it.next();
    String fieldName = data.getFieldName();
}

Или лучше:

for(DatabaseTableFieldUIData data : columnData){
    String fieldName = data.getFieldName();
}
...