java.lang.reflect.InvocationTargetException в Java - PullRequest
0 голосов
/ 27 мая 2010
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 (); строка, потому что iter.next (); возвращает значение bigDecimal и я конвертирую в строковую переменную

Пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Вы звоните next() дважды, но проверяете hasNext() только один раз в состоянии цикла while. Если в вашем списке нечетное количество элементов, этот код будет выбрасывать NoSuchElementException, что может быть где-то заключено в InvocationTargetException.

2 голосов
/ 27 мая 2010

Вы не можете привести BigDecimal непосредственно к String. Вместо этого попробуйте iter.next (). ToString ().

Также было бы неплохо использовать обобщения в Итераторах, так как это делает более понятным то, что они возвращают (и вы можете получить доступ к определенным методам этого класса напрямую (без приведения)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...