【问题标题】:Anylogic: Code generated from graphical interface throws type casting exceptionsAnylogic:从图形界面生成的代码抛出类型转换异常
【发布时间】:2020-02-26 23:41:27
【问题描述】:

在遵循this 问题的答案中给出的建议后,我最终得到了一个模型:

  • main 中的空代理群体

  • 引用 main 的所述代理类型中的状态图(由上一点实现)

  • 引用代理状态的离散事件流程图

但是在构建模型之后,出现了 3 个类型和铸造错误,并且它们在自动生成的代码中。我不明白上述代码提供了什么功能。

就上下文而言,我的模型称为“Trenes”,代理类型为“Train”。所有错误都发生在Train java 文件中。 异常发生在以下 sn-ps 中:

第一个:

  // User API -----------------------------------------------------
  public Main get_Main() {
    {
      Agent owner = getOwner();
      if ( owner instanceof Main ) return (Main) owner;
    }
    return null;
  }

这会导致Cannot cast from Agent to Main,这要归功于演员(Main) owner。也会因为owner instanceof Main而导致Incompatible conditional operand types Agent and Main.

第二个:

  @AnyLogicInternalCodegenAPI
  private void setupReferences_xjal() {
    main = get_Main();
  }

这个从第一个 sn-p 调用方法并在 main = get_Main(); 行中导致 Type mismatch: cannot convert from org.eclipse.jdt.internal.compiler.batch.Main to trenes.Main.

如果有人能指导我了解哪些图形界面配置可能导致这些错误,我将不胜感激,以及如何在不撤销我对引用 main 的状态图所做的工作的情况下纠正它。

编辑以添加对我的模型结构和相关逻辑的捕获:

【问题讨论】:

  • 显示流程图、您的状态图(以及两者所在的位置)以及您在两者中使用的代码以及使用它的位置。
  • 感谢@Felipe,我已经添加了模型的捕获。

标签: java anylogic codegen


【解决方案1】:

您可能搞砸了一些内部编码,这在极少数情况下会发生。

试试这个:

  • 创建一个全新的类TrainNew
  • 将其作为代理群体嵌入 Main
  • 一点一点地将你的功能(状态图、函数、变量)从Train 移到TrainNew
  • 完全删除Train 并解决任何最终冲突(通过指向TrainNew

【讨论】:

    猜你喜欢
    • 2019-06-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多