开发者

Cannot cast iterator

Hello I am having the same problems taking data from a collection with an iterator:

I have a class called DatabaseTableFieldUIData which has a method getFieldName.

In another class I have a collection of DatabaseTableFieldUIDatas like this:

Collection columnData

Now I want to go through that collection with an iterator to get all the field names with getFieldName method. So I tried something like this:

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

but it doesn't allow me to call getFieldName method from the iterator, so I tried casting the iterator to DatabaseTableFieldUIData:

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

And I get the error "Cannot cast from Iterator to DatabaseTableFieldUIData", don't know what to d开发者_运维知识库o right now :(

Thanks for the help.


You need to call it.next() to get the object "pointed to" by the iterator.

See http://download.oracle.com/javase/1,5.0/docs/guide/language/foreach.html for guidance on using iterators.


An Iterator is not a DatabaseTableFieldUIData This literally million of examples of how to use an Iterator correctly.

If you use a for-each loop, you don't need an Iterator at all.

for(DatabaseTableFieldUIData aux: columnsData) {


Try this:

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

Or better:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜