Java中的java.lang.reflect.InvocationTargetException

时间:2010-05-27 09:54:14

标签: java

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变量

请帮帮我

2 个答案:

答案 0 :(得分:3)

您正在调用next()两次,但仅在while循环条件下检查hasNext()一次。如果您的列表中包含奇数个元素,则此代码将抛出NoSuchElementException,该代码可能会被包含在InvocationTargetException某处。

答案 1 :(得分:2)

您无法将BigDecimal直接转换为String。尝试使用iter.next()。toString()。

在迭代器上使用泛型也是一个好主意,因为它更清楚地返回它们(并且你可以直接访问该类的特定方法(不需要强制转换))。