Является ли Kotlin Companion Object просто способом добавления функций из интерфейса? - PullRequest
0 голосов
/ 23 сентября 2018

Я читаю книгу 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 Ответ

0 голосов
/ 23 сентября 2018

Моя ментальная модель для объекта-компаньона - поддержка безопасных синглетонов на уровне языка.т. е. вместо статических методов в классе для методов Factory или Util, вы можете предоставить эти связанные методы для объекта-компаньона Singleton.

Статус Companion дает вам множество выигрышей по умолчанию, которые похожи на класс java.со статическими методами.

Ваш пример кажется неверным, потому что почему Fruit "singleton" Apple?

...