1. Создайте объект-компаньон
Иногда требуется функция или свойство-синглтон, связанное с классом, а не с экземпляром. В других языках, таких как Java, для этой цели может использоваться staticчлен класса. Kotlin предлагает companion objectдля этой цели соответствующий объект. Этот объект-компаньон не является экземпляром и не предназначен для самостоятельного использования.
- Попробуйте
Decoration.ktиспользовать пример вспомогательного объекта.
class Choice {
companion object {
var name: String = "lyric"
fun showDescription(name:String) = println("My favorite $name")
}
}
fun main() {
println(Choice.name)
Choice.showDescription("pick")
Choice.showDescription("selection")
}
⇒ lyric My favorite pick My favorite selection
Объекты-компаньоны — это настоящие объекты Kotlin. Они могут реализовывать интерфейсы и расширять классы, что делает их очень функциональными, при этом экономя память благодаря использованию синглтона.
Основное различие между объектами-компаньонами и обычными объектами заключается в следующем:
- Сопутствующие объекты инициализируются из статического конструктора содержащего класса, то есть они создаются при создании объекта.
- Обычные объекты инициализируются лениво при первом обращении к ним, то есть при первом использовании.
Есть и другие нюансы, но на данный момент вам достаточно знать только то, как обернуть константы в классах в сопутствующий объект.