在传送带的头部获取代理 - ConveyorPath.getAgent() 的正确使用?

Get agent at the head of conveyor - correct use of ConveyorPath.getAgent()?

在我的模型中,有一个码垛区域,码垛代理移动到与堆积传送带相邻的位置,拿起传送带上的最后一个箱子,并将其转移到托盘上。

我正在尝试找到引用传送带上最后一个盒子并将其存储在变量中的最佳方法。

我知道 ConveyorPath.getAgent(),记录在案 here 但它似乎无法正常运行,抛出以下错误:

Code : v_box = v_conveyorPath.getAgent(0);    
Error : Description: Type mismatch: cannot convert from Agent to Box.

我进入传送带标记并将“Material 项目类型”字段更改为“盒子”,但无济于事。

我在这里做错了什么?如何将 ConveyorPath 设为 return Box 类型而不是 Agent 类型?

谢谢。

编辑:在 运行 测试之后,我可以确认传送带上的代理属于 Class Box.

traceln(conveyor.getAgent(0).getClass());
Output : class modelname.Box

但我仍然无法在变量中存储对该 Box 的引用。

您可以简单地将您获得的代理投射为一个盒子

Box myBox = (Box)conveyor.getAgent(0)

请记住,如果传送带上有任何不是盒子的东西,这种类型的铸造将导致错误

在这里阅读更多 https://www.w3schools.com/java/java_type_casting.asp

但是如果您在传送带对象中指定您拥有的对象是盒子,或者在下面的示例中是纸箱,

然后 get 函数将 return 指定该类型的代理,因此不需要强制转换。

在大多数模型中,后一种选择是最安全且可能更正确的方法