Как сохранить ссылку на объект класса singleton в сопутствующем объекте, Kotlin

Код, который я хочу преобразовать, выглядит следующим образом;

public class AndroidLauncher extends AndroidApplication {

   public static AndroidLauncher androidLauncher;
   @Override
   protected void onCreate (Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       androidLauncher = this;
   }
}

Что это за сгенерированный Android-код?

class AndroidLauncher : AndroidApplication() {
   protected override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       androidLauncher = this
   }

   companion object {

       var androidLauncher: AndroidLauncher
   }
}

Этот код дает мне ошибку, которая есть;

Свойство должно быть инициализировано или быть абстрактным

Я разрабатываю игру с помощью libgdx, поэтому я буду использовать этот подход, чтобы использовать объект Game из любого места, где я захочу. Это одноэлементный класс, поэтому он не пропустит память.

1 ответ

Решение

Использование lateinit чтобы указать, что поле будет инициализировано позже.

   companion object {
       lateinit var androidLauncher: AndroidLauncher
   }
Другие вопросы по тегам