Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpOcSg 85 of 123 menu
◀ ▶

Единственный объект в Kotlin

Объявление object Name { ... } в Kotlin сразу создаёт единственный объект с этим именем. Язык не предлагает конструктор для второго экземпляра: снаружи доступно только обращение по имени Name.

object AppId { val name = "demo" } fun main() { val a = AppId val b = AppId println(a === b) println(a.name) }

Оператор === сравнивает ссылки. Для двух обращений к одному object результат true: это один и тот же объект в памяти.

Такой объект часто называют singleton - «одиночка». Им пользуются для общих настроек, счётчиков, кэша в памяти, когда несколько копий сломали бы смысл задачи. Ключевое слово object задаёт этот смысл одной декларацией:

object VisitCounter { var total: Int = 0 fun hit() { total += 1 } } fun main() { VisitCounter.hit() VisitCounter.hit() println(VisitCounter.total) }

Если нужны много независимых экземпляров одного типа, подходит обычный class с вызовом конструктора, как в разделе про основы. Ключевое слово object выбирают, когда общий доступ к одному состоянию или одному набору функций - часть дизайна, а не случайность.

Сделайте object Session со свойством token: String со значением "abc". Сохраните ссылки в first и second, обе равные Session. Выведите результат first === second.

Сделайте object ClickCounter с var count = 0 и методом click(). Вызовите click() три раза из разных функций файла и выведите count.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить