AnyLogic中List<T>变量触发NullPointerException问题求助
解决智能体消息接收时的NullPointerException问题
问题原因
你遇到的NullPointerException本质是列表变量未初始化:你只声明了MessagesReceived列表,但没有创建具体的List实例对象;同时代码里的变量名拼写存在不一致——你声明的是MessagesReceived,但代码里写的是Messages_Recieved,下划线位置错误,这要么导致调用了未声明的变量,要么调用的是未初始化的变量,最终触发空指针错误。
解决步骤
- 统一变量名:把代码里的
Messages_Recieved改成和声明一致的MessagesReceived,建议用小驼峰命名(比如messagesReceived),更符合代码规范,减少拼写错误。 - 初始化列表:
方法1:变量声明时直接初始化(推荐)
在AnyLogic的变量面板里,找到MessagesReceived变量,将初始值设置为new ArrayList<>()(如果你的消息是自定义类型,把泛型改成对应类型,比如new ArrayList<CustomMessage>())。
或者用代码声明:
方法2:智能体启动时初始化List<Message> messagesReceived = new ArrayList<>();
在智能体的On startup事件中添加代码:this.messagesReceived = new ArrayList<>(); - 修正消息接收代码:确保
OnMessageReceived里的代码调用正确的变量:this.messagesReceived.add(msg);
内容的提问来源于stack exchange,提问作者mohammad javad Jafari
相关产品推荐
相关产品推荐

