У меня проблемы с некоторым кодом Kotlin, с которым я раньше не сталкивался.
В одном упражнении я объявляю переменную поздней инициализации:
lateinit var currentUser : User
И позже инициализировать это. Я знаю, что он инициализирован, потому что я использовал метод isInitialized для двойной проверки после его инициализации:
private fun instantiateUser(name : String?, email : String?, flatId : String?) {
currentUser = User(name, email, flatId)
if(::currentUser.isInitialized) {
Toast.makeText(this@HomeActivity, "Initialised", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@HomeActivity, "Not initialised", Toast.LENGTH_SHORT).show()
}
}
Я получил ожидаемый результат, поэтому я знаю, что currentUser инициализирован. Однако при последующем вызове из действия, которое запускается сразу после этого, я получаю исключение UnitializedPropertyAccessEx в этой строке:
var currentUser = HomeActivity().currentUser
Вот класс User, если он имеет отношение:
@IgnoreExtraProperties
data class User(
var name: String? = "",
var email: String? = "",
var flat: String? = ""
)
Любые предложения о том, что может быть причиной этого, будут высоко оценены.