объект-компаньон перегружен в Kotlin? - PullRequest
1 голос
/ 07 апреля 2020

Здесь у меня есть java код

  private static void content() {}

, и я конвертирую в Kotlin, это показывает, что оно становится

companion object {

    private fun content() {}
}

Мне интересно, должен ли я сохранить его в объекте-компаньоне или я должен удалить объект-компаньон?

1 Ответ

1 голос
/ 07 апреля 2020

Объект-компаньон является одноэлементным, и к его членам можно обращаться напрямую через имя содержащего класса (хотя вы также можете вставить имя объекта-компаньона, если хотите явно указать доступ к объекту-компаньону)

Сопутствующий объект инициализируется при загрузке класса (как правило, в первый раз, когда на него ссылается другой код, который выполняется), в поточно-ориентированном режиме. Вы можете опустить имя, и в этом случае по умолчанию используется имя Companion. У класса может быть только один объект-компаньон, а объекты-компаньоны не могут быть вложенными.

class Car(val horsepowers: Int) {
companion object Factory {
    val cars = mutableListOf<Car>()

    fun makeCar(horsepowers: Int): Car {
        val car = Car(horsepowers)
        cars.add(car)
        return car
    }
}

}

val car = Car.makeCar(150)
println(Car.Factory.cars.size)

Преимущество объектов-компаньонов по сравнению с членами stati c заключается в том, что они могут наследовать от других классов или реализовывать интерфейсы и обычно ведут себя как любой другой синглтон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...