В Kotlin class — это шаблон, который должен быть явно инстанцирован, а объявление object создает singleton — единственный, глобально доступный экземпляр, который не требует инстанцирования.
class определяет переиспользуемый шаблон. Ты создаешь экземпляры через конструктор:
class DatabaseHelper {
fun connect() { ... }
}
val helper = DatabaseHelper() // явное инстанцирование обязательно
Объявление object определяет singleton напрямую. Вызов конструктора не требуется — экземпляр создается автоматически:
object DatabaseHelper {
fun connect() { ... }
}
DatabaseHelper.connect() // доступен напрямую, без инстанцирования
class требует ClassName(), object доступен напрямую по имениclass может создавать много экземпляров, object всегда имеет ровно одинclass поддерживает конструкторы, object не поддерживаетKotlin object автоматически обеспечивает две важные гарантии:
Объявление object — это идиоматичный способ в Kotlin заменить статические методы Java и паттерны singleton, избавляя от необходимости писать getInstance() вручную.
Объявление object в Kotlin автоматически обеспечивает потокобезопасную ленивую инициализацию экземпляра синглтона без необходимости писать явный код синхронизации.
Новый — ещё не проверен сообществом
Вы