首页 > 解决方案 > 尝试从 AnyLogic 中的 Main 访问代理时出现 NullPointerException

问题描述

我正在尝试从 Main 向处于特定状态的代理发送消息。我已经这样做了很多次,但这次 AnyLogic 返回 NullPointerException 错误。

这是我用来发送消息的代码:

User chosen_user = randomWhere(users, t -> t.inState(User.Innactive));
users.get(chosen_user.getIndex()).receive("message");

用于traceln(chosen_users.getIndex())打印索引,一切正常。就在我将索引插入函数 get() 时,它返回错误。

即使我只插入一个随机数,比方说users.get(1).receive("message"),它仍然返回相同的错误(我的人口有 700 个代理)。

有什么想法吗?

标签: anylogic

解决方案


这只是因为在某个特定时间没有用户处于该状态,所以您的呼叫返回。InnactiverandomWherenull

您也不需要间接使用索引;只需使用以下功能将消息直接发送给它send

if (chosen_users != null) {
   send("message", chosen_users);
}

(您的命名也具有误导性,因为chosen_users始终是一个User代理(或null)。)


推荐阅读