if(locs!=null)
{
System.out.println("location are not null");
Iterator ite = locs.iterator();
DefaultComboItem locObj = null;
ArrayList locCode = null;
String cod=null;
String name=null;
while(ite.hasNext())
{
locCode = (ArrayList) ite.next();
Iterator iter = locCode.iterator();
while(iter.hasNext())
{
cod=(String)iter.next();
System.out.println("Code="+cod);
name=(String)iter.next();
System.out.println("name="+name);
locObj = new DefaultComboItem(cod, name);
colRet.add(locObj);
}
}
}
执行上面的代码我得到“java.lang.reflect.InvocationTargetException” 得到这个例外 鳕鱼=(字符串)iter.next(); line,因为iter.next();返回bigDecimal值,我将转换为String变量
请帮帮我
答案 0 :(得分:3)
您正在调用next()
两次,但仅在while循环条件下检查hasNext()
一次。如果您的列表中包含奇数个元素,则此代码将抛出NoSuchElementException
,该代码可能会被包含在InvocationTargetException
某处。
答案 1 :(得分:2)
您无法将BigDecimal直接转换为String。尝试使用iter.next()。toString()。
在迭代器上使用泛型也是一个好主意,因为它更清楚地返回它们(并且你可以直接访问该类的特定方法(不需要强制转换))。