Можем ли мы определить наши аксессоры без значения init?

Я хочу определить свой собственный аксессор для поля, например:

var item: Item get() {...} set(value) {...} 

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

То, что я могу выбрать, – объявить другое поле с нулевым значением и использовать это поле для реализации элементов доступа к элементам, что является слишком глупым и избыточным.

Поэтому я предполагаю, что для реализации этого требования должны быть другие способы …


Обновить:

Спасибо за ответ. Думаю, я не ясно это сказал. И после того, как я прочитал документ несколько раз, я думаю, что ответ НЕТ.

Мое требование: есть ли более простой альтернативный способ объявить это?

 private var _table: Map<String, Int>? = null public val table: Map<String, Int> get() { if (_table == null) _table = HashMap() // Type parameters are inferred return _table ?: throw AssertionError("Set to null by another thread") } 

Мы должны объявить свойство backabe backing, чтобы мы могли настроить аксессоры, а также оставить поле неинициализированным.

Если вы объявите свойство с помощью поля поддержки, вам нужно его инициализировать. Если вы не хотите инициализировать его, вы можете объявить пользовательские геттеры и сеттеры.

 var item: String get() = "my String" set(value) { log(value) //do something with value } 

Если у вас нет значения для инициализации свойства, объявите его nullable и инициализируйте его с помощью null

 var item: String? = null get() = field set(value) { field = value //do something with value } 

Если это не соответствует вашим требованиям, обновите вопрос, чтобы уточнить.

  • Преобразование Any в ArrayList в Котлине, дооснащение
  • В тестовом пакете не читаются классы Котлина, определенные в основном пакете
  • Класс данных Котлина с производными свойствами
  • Может ли Kotlin или Swift разобрать JSON так же, как Javascript?
  • Kotlin - свойство должно быть инициализировано или быть абстрактным, даже если есть функция init ()
  • Как использовать обработанную Kotlin оболочку MailChimp в Java Project
  • DigestUtils.md5Hex () генерирует неправильное значение хэша при передаче объекта String
  • Как заменить Doko-Inko, уи-трюк с функциями kotlin 1.1.0 kotlinx-coroutines-core lib?
  • Котлин проверял исключения
  • между объектом и GoogleMap в kotlin
  • Низкая производительность анимации параметров макета в Android
  • Interesting Posts

    как получить доступ к сопутствующему объекту из экземпляра объекта в kotlin?

    Треки жестов с сервисного андроида

    Как организовать несколько блоков сопрограммы и ожидания в тесте Kotlin Spek?

    Почему скрытие фрагмента вызывает исключение нулевого указателя?

    Классы класса Kotlin, которые наследуют классы Java, также наследуются от Any?

    Две функции с различным количеством параметров типа в Котлине

    Kotlin: как вернуть исполняемый экземпляр службы в связующее?

    Запустить один класс kotlin с основной функцией в студии android

    Что происходит, когда кнопка «Назад» нажата до завершения асинхронного вызова?

    Kotlin переопределяет набор элементов и получает

    Realm, инициализируя пустой массив строк, возвращает «Unsupported type java.lang.String » on build

    Fade excludeTarget не работает внутри DrawerLayout

    Почему не смотрит вперед и не смотрит работу Regex в Котлин?

    Авто-полная поддержка kotlin в Eclipse-neon

    RuntimeException, если minifyEnabled истинно с классом ViewModel

    Давайте будем гением компьютера.