Sobes.tech
Junior

Pasakokite apie companion objektą Kotlin'e.

sobes.tech AI

Atsakymas iš AI

companion object Kotlin'e naudojamas apibrėžti klasės narius (savybes ir funkcijas), kurie yra bendri visiems tos klasės egzemplioriams, taip pat jiems pasiekti be klasės egzemplioriaus kūrimo. Tai iš esmės yra statinių narių ekvivalentas Java, bet įgyvendintas kaip objektas klasės viduje.

Pagrindinės savybės:

  • Vienas egzempliorius: Klasės viduje gali būti tik vienas companion object.
  • Inicijavimas: Inicijuojamas pirmojo įkėlimo metu.
  • Prieiga prie privačių narių: Turi prieigą prie išorinės klasės privačių narių.
  • Pavadinimas: Pagal numatytuosius nustatymus turi pavadinimą Companion, bet gali būti aiškiai pavadintas.
  • Interfeisų įgyvendinimas: Gali įgyvendinti interfeisus.

Pavyzdys:

class MyClass {
    companion object {
        const val TAG = "MyClass" // Konstanta

        fun createInstance(): MyClass { // Gamybos metodas
            return MyClass()
        }
    }

    fun doSomething() {
        println("Darydamas kažką...")
    }
}

fun main() {
    println(MyClass.TAG) // Pasiekti companion object narį
    val instance = MyClass.createInstance() // Naudoti gamybos metodą
    instance.doSomething()
}

Privalumai:

  • Daugiau semantikos: Leidžia grupuoti susijusius "statinius" narius vienoje vietoje.
  • Lankstumas: Gali įgyvendinti interfeisus, kas naudinga projektavimo šablonams.
  • Prieiga prie privačių narių: Supaprastina gamybos metodų ir singleton'ų įgyvendinimą klasės viduje.