gpt4 book ai didi

java - AnyLogic基于代理的建模: ClassCastException

转载 作者:行者123 更新时间:2023-12-02 12:00:45 42 4
gpt4 key购买 nike

我正在 AnyLogic 中进行基于代理的传染病流行模拟。我的模型中有两种代理类型 - 人员和建筑物。我正在尝试编写一个函数来计算代理类型“人员”在任何给定时间点所具有的传染性接触数量。下面是我的函数代码:

int infectedConnections = 0;

if (getConnections() != null)
for (Agent a : this.getConnections())
{
Person p = (Person) a;

if (p.IsCurrentlyInfected())
infectedConnections++;
}

return infectedConnections ;

代码编译时没有任何错误,但在运行时,它会抛出 java.lang.ClassCastException 并显示以下消息:model.Building 无法转换为 model.Person。

当我仅使用一种代理类型(即“人”)尝试相同的代码时,模型运行良好并且函数返回正确的值。有人可以告诉我如何纠正我的代码,以便我能够运行“Person”的函数吗?

最佳答案

如果您只想忽略 Building 类型的代理,则可以执行以下操作:

int infectedConnections = 0;

if (getConnections() != null) {
for (Agent a : this.getConnections())
{
if(a instanceof Person) {
Person p = (Person) a;

if (p.IsCurrentlyInfected()) {
infectedConnections++;
}
}
}
}
return infectedConnections;

问题是,如果 a 是建筑物而不是人,(Person) a; 将失败。

关于java - AnyLogic基于代理的建模: ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47268093/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com