Я хочу хранить в своей модели время обработки для каждого агента типа Box
. Для этого я создал класс Java ProcessData
.
Моя проблема в том, что я всегда получаю NullPointerExceptions. Я не знаю, связано ли это с моим кодом или с функциональностью пакетного блока.
Когда блок ожидания достигает определенного размера, все агенты типа Box
направляются в пакетный блок. Затем batch agent
ждет сотрудника в блоке захвата. Если затем агент захвачен, каждый агент типа Box, содержащийся в пакетном агенте, должен получить время начала обработки. Это мой код при входе в блок задержки: box.getProcessData().add(new ProcessData(date(), duration()));
. С помощью конструктора я добавляю время начала и продолжительность в качестве новых переменных в новую запись ProcessData.
Чтобы определить время окончания каждого агента Box, у меня есть следующий код при вводе блока распаковки: box.getProcessData().getLast().setEnd(date());
Поскольку у меня есть исключение NullPointerException, я не могу точно сказать, откуда оно взялось. Я предполагаю, что у меня есть ошибка с адресацией кода: я должен использовать agent.
(из пакета) или box.
(имя исходного агента перед пакетом)? Или нельзя задать пакетному агенту свойства, которые унаследованы бокс-агентом?
Первая ошибка при распаковке, поэтому второй код сверху и вторая ошибка следующие public void onExit( Box batch, Box agent ) { _unbatch_onExit_xjal( this, batch, agent ); }
.
Следуя скриншоту моей ошибки:
ящик или агент: узнайте о волшебной лампочке здесь: benjamin-schumann.com/blog/2016/2/4/… здесь объясняется, что это за термины и как их использовать
Я не включил скриншот, потому что он направляет меня ко второму коду (сверху) без какой-либо дополнительной информации. Я знаю, что что-то не так с моим кодом, но я понятия не имею, что может быть не так. И также нет лампочки ни в одной из коробок, в которые я положил свой код...
Что на самом деле говорит NPE? Пожалуйста, всегда делитесь скриншотами ошибок, они дают подсказки, о которых вы, возможно, еще не знаете ;)
Хорошо, я отредактировал свой пост, Бен: D
Во-первых, проблема, с которой вы столкнулись с этой моделью, заключается в том, что вы захватываете ресурс для пакета, не освобождая этот ресурс... вам нужно освободить его перед распаковкой.
ваша ошибка, тем не менее, связана с некоторым кодом, который вы написали в действии при выходе из блока распаковки, о котором вы, к сожалению, не сообщаете нам
Но чтобы узнать, что является нулевым, проверьте с помощью traceln() значение переменных, которые присутствуют в разделе при выходе распаковки, чтобы напечатать на экране то, что является нулевым.
Хорошо, спасибо за вклад, Фелипе! Знаете ли вы, как это выглядит, когда я устанавливаю переменную для пакетного агента, если затем всем включенным агентам также назначается одна и та же переменная?
при пакетном действии вы можете выполнить batch.variable=agent.variable
после пакетного блока вы получаете доступ к пакетным агентам, используя agent.contents(), это вернет список всех агентов, которые были пакетированы.
NullPointers всегда дают синюю ссылку на фактическую строку кода, вызывающую это. Поделитесь, пожалуйста, скрин ошибки и скрин куда она указывает. Это, вероятно, также поможет вам исправить это самостоятельно.