У меня есть сложный набор характеристик и классов дел, но ради обсуждения позвольте мне обобщить то, что я пытаюсь смоделировать следующим образом:
case class X(x: X)
Это нормально, пока я не закончу инициализировать один из экземпляров следующим образом:
val myX: X = X(myX)
Он компилируется (невероятно), но myX
, переданный конструктору, на самом деле null , легко видимый после проверки myX.x
впоследствии .
Предположим, наличие экземпляра, указывающего на себя, хорошо для того, что я пытаюсь смоделировать, есть ли элегантный способ решить эту проблему и получить новый экземпляр X
с указателем на себя? Я имею в виду не мутировать объект после его создания и не вводить 2-й конструктор, который не принимает параметров и использует this
внутри. Помните, пожалуйста, реальная ситуация более сложна, чем то, что было показано здесь.