Я не вижу проблемы. Тем не менее, я думаю, вы сможете довольно быстро разобраться в этом. Вот мое предложение:
Постепенно опускайте фрагменты из вашей программы. После каждого шага запускайте код и смотрите, сохраняется ли проблема. Каждый такой «эксперимент» даст вам ценную информацию о причине проблемы. В конце концов вы захотите определить, какой элемент в вашем коде вызывает проблему.
Вот несколько шагов по пути:
- Возникает ли проблема, если вы удалите
o2
из своего кода?
- Возникает ли проблема, если вы создаете
o2
, но не добавляете его в list
?
- Возникает ли проблема при удалении поля
a
из класса POJO
?
- Возникает ли проблема при изменении
a
в массив из одного элемента (a = new int[1]
)?
- Возникает ли проблема при изменении
a
из массива в (скажем) целое число?
- Возникает ли проблема, если вы измените тип
b
с int на какой-нибудь другой примитив?
- Возникает ли проблема, если вы измените тип
b
с типа int на какой-нибудь другой не примитивный тип (скажем, String
или java.util.Date
)?
- Возникает ли проблема, если вы измените порядок
o1
и o2
внутри списка (т.е. добавьте (o2), а затем добавьте (o1))?
- Возникает ли проблема, если вы измените сигнатуру printThere () так, чтобы она принимала (скажем) параметр
POJO
(вместо одного ArrayList)?
- Возникает ли проблема, если вы измените порядок полей в отпечатке (например, сначала напечатайте b, затем a [1], затем a [0])?
- ...
Обычно, после применения нескольких таких шагов «преобразования», я собираю достаточно информации, чтобы определить основную причину. Вдобавок ко всему, я пытаюсь уменьшить объем. Если я обнаружил, что проблема возникает, даже если o2
опущен, тогда я держу ее подальше, перейдя к программе меньшего размера, которая более проста для понимания.