😊 Это база: companion object (также Singleton)
Объекты можно объявлять внутри класса, при этом нет каких-либо ограничений по их количеству. Но только один объект можно пометить ключевым словом
companion object в рамках одного класса.Синглтон-свойство
companion object достигается за счет того, что он создается внутри класса в качестве статического поля. Он будет инициализирован при первом обращении к нему или при создании первого экземпляра класса, в котором он объявлен.Важно отметить, что
companion object будет инициализирован первым, а затем уже будет создан экземпляр класса:class MyClass {
init {
// Выполняется всегда после инициализации companion object
}
companion object {
init {
// Выполняется всегда перед блоком init содержащего класса
}}}
val myClass = MyClass()Такому объекту можно не указывать свое имя, и обращаться к методам и свойствам объекта через имя содержащего его класса без явного указания имени объекта.
class SomeClass {
companion object {
fun create()
}
}
val someClass = SomeClass.create()Компилируется в
public static final class на Java. Работает подобно ключевому слову static в Java.👉Новости 👉База вопросов