2013-05-28 6 views
0

У меня проблема, из-за которой я не могу оторвать голову. Я работаю над некоторыми данными JSON, которые были преобразованы в исходные структуры List и Map. Затем я проверяю, является ли конкретное поле List, и, если это так, я отнес его к одному, чтобы продолжить работу с ним.Java cast to List сбой

У меня есть;

if (value != null && value instanceof List){ 
    List listValue = (List) value; 
    ... 
} 

В отладчик Eclipse, я могу ясно видеть, что значение является ArrayList, и она содержит карту, и поэтому код переходит к следующей строке, в которой происходит бросок. Результатом приведения является пустой список, то есть listValue - это список, в котором ничего нет. Я не понимаю, почему так должно быть. Может ли кто-нибудь пролить свет на то, что я делаю неправильно?

Обновление: Это похоже на проблему параллелизма. Я отправил ответ, на который комментарии приветствуются. Спасибо за вклад каждого.

+3

Код, который у вас здесь, ничего не сделает с содержимым списка - он будет вести себя так, как вы ожидаете. Если ваш список опустел, тогда происходит что-то еще! – berry120

+0

Отсюда моя путаница ... –

+1

Вы уверены, что у вас есть значения в 'value'? - просто проверка – mcalex

ответ

0

Кажется, это была проблема параллелизма. Проводка помогла мне прийти к такому выводу. Моя собственная ошибка для передачи измененного объекта в метод @Async, а затем не ожидала его изменения. Как только я разобрал эту небольшую проблему, моя проблема исчезла, как и ожидалось.