我正在尝试修改列表中选择对象中的字段,但是我找不到使用纯Iterator的方法,因为它没有set()
方法。
我尝试使用提供set()
方法的ArrayListIterator,但这会引发强制转换异常。有办法解决此问题吗?
Iterator it = topContainer.subList.iterator();
while (it.hasNext()) {
MyObject curObj = (MyObject) it.next();
if ( !curObj.getLabel().contains("/") ) {
String newLabel = curObj.getLabel() + "/";
curObj.setLabel(newLabel);
((ArrayListIterator) it).set(curObj)
}
}
我希望可以毫无问题地设置列表中的原始当前对象,但是却收到了这个异常:
java.util.ArrayList $ itr无法转换为
org.apache.commons.collections.iterators.ArrayListIterator
完成我想做的事情的正确方法是什么?
最佳答案
您根本不需要调用set
。您可以在setLabel
上调用curObj
:
// please, don't use raw types!
Iterator<? extends MyObject> it = topContainer.subList.iterator();
while (it.hasNext()) {
MyObject curObj = it.next();
if ( !curObj.getLabel().contains("/") ) {
String newLabel = curObj.getLabel() + "/";
curObj.setLabel(newLabel);
}
}