无法投射迭代器

时间:2011-06-17 13:37:08

标签: java eclipse casting iterator

您好我在使用迭代器从集合中获取数据时遇到了同样的问题:

我有一个名为DatabaseTableFieldUIData的类,它有一个方法getFieldName。

在另一个类中,我有一个DatabaseTableFieldUIDatas的集合,如下所示:

Collection columnData

现在我想通过迭代器遍历该集合,以使用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;

我收到错误“无法从Iterator转换为DatabaseTableFieldUIData”,不知道现在该做什么:(

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

你需要调用it.next()来获取迭代器“指向”的对象。

有关使用迭代器的指导,请参阅http://download.oracle.com/javase/1,5.0/docs/guide/language/foreach.html

答案 1 :(得分:3)

Iterator不是DatabaseTableFieldUIData这是如何正确使用Iterator的数百万个例子。

如果使用for-each循环,则根本不需要Iterator。

for(DatabaseTableFieldUIData aux: columnsData) {

答案 2 :(得分:1)

试试这个:

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

或更好:

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