Anylogic: код, сгенерированный из графического интерфейса, генерирует исключения приведения типов - PullRequest
0 голосов
/ 31 октября 2019

После следования совету, данному в ответе на этот вопрос, я получил модель с:

  • Пустая группа агентов в основном

  • Диаграмма состояний в указанном типе агента, которая ссылается на основной (стало возможным благодаря предыдущему пункту)

  • Потоковая диаграмма дискретных событий, которая ссылается на состояниеагенты

Но после построения модели появились 3 типа и ошибки приведения, и они есть в сгенерированном коде. Я не понимаю, какие функции предоставляет указанный код.

Для контекста моя модель называется "Trenes", а мой тип агента - "Train". Все ошибки происходят внутри Train Java-файла. Исключения случаются в следующих фрагментах:

первый:

  // 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. Это также вызывает Incompatible conditional operand types Agent and Main. из-за owner instanceof Main.

второго:

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

Этот вызывает метод из первого фрагмента и вызывает Type mismatch: cannot convert from org.eclipse.jdt.internal.compiler.batch.Main to trenes.Main. в строке main = get_Main();

Буду признателен, если кто-нибудь подскажет мне, какие конфигурации графического интерфейса могут привести к этим ошибкам, и как я могу исправить их, не отменяя мою работу с диаграммой состояний, которая ссылается на main.

Редактирование для добавления снимков структуры моей модели и соответствующей логики:

1 Ответ

0 голосов
/ 31 октября 2019

Возможно, вы ошиблись внутренним кодированием, это может случиться в редких случаях.

Попробуйте это:

  • Создайте совершенно новый класс TrainNew
  • встроить его в Main как совокупность агентов
  • по крупицам «перемещать» вашу функциональность (диаграммы состояний, функции, переменные) с Train до TrainNew
  • delete Trainполностью и разрешить любые окончательные конфликты (указав на TrainNew
...