Является ли Kotlin Companion Object просто способом добавления функций из интерфейса?
Я читаю книгу Kotlin in Action и пытаюсь лучше понять объекты-компаньоны. Существуют ли другие варианты использования объектов-компаньонов, кроме добавления реализаций методов из интерфейса / абстрактного класса?
Я наткнулся на способ создания объекта, который работает, только если класс является абстрактным:
fun main(args: Array<String>) {
Fruit.showColor()
}
class Fruit(val name: String) {
companion object : Apple()
}
abstract class Apple {
fun showColor(){
print("I am an apple")
};
}
1 ответ
Моя ментальная модель для объекта-компаньона - поддержка безопасных синглетонов на уровне языка. т.е. вместо статических методов в классе для методов Factory или Util, вы можете предоставить эти связанные методы в сопутствующем объекте Singleton.
Статус Companion дает вам множество побед по умолчанию, которые похожи на класс java со статическими методами.
Ваш пример кажется неверным, потому что почему Fruit "singleton" Apple?