Самоссылочные данные (рекурсивная структура данных): Невозможно ссылаться на поле до его определения Java - PullRequest
0 голосов
/ 31 октября 2019

спасибо за помощь. У меня есть некоторые самостоятельные данные, и я не могу понять, как использовать информацию, не получив эту ошибку.

"Невозможно ссылаться на поле до его определения"

class Bus {
  String name;
  Location destination;

  Bus(String name, Location destination){
    this.name = name;
    this.destination = destination;
  }
}

class Location {
  String name;
  Bus busToLocation;

  Location(String name, Bus busToLocation){
    this.name = name;
    this.busToLocation = busToLocation;
  }
}

class Examples{
  Bus bus1 = new Bus("Charlie", loc1);
  Location loc1 = new Location("USA", bus1);
}

Конечно, это имеет смысл, поскольку Java работает сверху вниз. К сожалению, я не могу просто изменить порядок на

Location loc1 = new Location("USA", bus1);
Bus bus1 = new Bus("Charlie", loc1);

, поскольку у меня все еще остается та же проблема.

Я подумал о том, чтобы попробовать что-то вроде первоначального создания нулевого указателя (как вы могли бы в некоторых других языках)

class Examples{
  Bus bus1;
  Location loc1;

  bus1 = new Bus("Charlie", loc1);
  loc1 = new Location("USA", bus1);
}

Но я вполне уверен, что вы не можете сделать это в Java. (Это недопустимый синтаксис)

Какой лучший способ сделать это? Спасибо!

Редактировать: Это упрощение фактического кода. В реальном коде шины имеют несколько уровней классов и находятся внутри самореферентного списка, поэтому гораздо труднее использовать сеттеры для их изменения после факта. Если возможно, я бы хотел найти решение, не требующее установки.

...