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();
}
精彩评论