是否可以在 AnyLogic 中对 excel sheet 进行静态引用?

Is it possible to make a static reference to an excel sheet in AnyLogic?

我想在 AnyLogic 模型中使用静态 java 函数调用 Excel,如图所示。函数“readExcelFile”必须是静态的,因为我想从我的 AnyLogic 项目中的另一个 class 调用它。 但是,当我调用该函数时,出现错误:“无法对非静态字段 produktionssystem 进行静态引用”。 这个问题有解决办法吗?

很难理解是什么导致了这里的错误,因为我看不到你的函数内部。

另一个 class 中的 read/write 到 Excel 文件没有固有问题(即在另一个代理、自定义 class 等中)。

这是 AnyLogic 云上的 link 到 public 模型,当我第一次开始在 AnyLogic 中使用 Excel 文件时,我发现它非常有用: https://cloud.anylogic.com/model/99d9f196-17e7-47c3-9b28-63a6f23b0dad?mode=SETTINGS

该错误是因为 Excel 元素 produktionssystem 只能是 (non-static) 元素,无论您的函数所在的代理类型是什么(屏幕截图中的 Main)。根据定义,静态函数看不到代理 instances.

中的任何元素(Java 字段)

但是你应该从不需要一个静态函数,除非你需要在 runs 之间共享它(如果你这样做会产生危险的副作用)不小心)。需要调用它的代理只需要对具有该功能的代理实例的引用。

如果呼叫代理是 function-declaring 代理的 'child',您已经获得 AnyLogic 提供的“Link 到上层代理”main (如果调用代理在模型的代理层次结构中的任何位置,这将始终存在)。否则,您的呼叫代理将需要类似 Main 类型的参数,由创建它的人设置。