Sobes.tech
Junior

Povězte o companion object v Kotlinu.

sobes.tech AI

Odpověď od AI

companion object v Kotlinu se používá k definování členů třídy (vlastností a funkcí), které jsou společné pro všechny instance této třídy, a také k jejich přístupu bez vytváření instance třídy. Je to v podstatě ekvivalent statických členů v Javě, ale implementovaný jako objekt uvnitř třídy.

Hlavní vlastnosti:

  • Jedna instance: Uvnitř třídy může být pouze jeden companion object.
  • Inicializace: Je inicializován při prvním načtení třídy.
  • Přístup k soukromým členům: Má přístup k soukromým členům vnější třídy.
  • Pojmenování: Výchozí jméno je Companion, ale může být explicitně pojmenováno.
  • Implementace rozhraní: Může implementovat rozhraní.

Příklad použití:

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

        fun createInstance(): MyClass { // Tovární metoda
            return MyClass()
        }
    }

    fun doSomething() {
        println("Dělám něco...")
    }
}

fun main() {
    println(MyClass.TAG) // Přístup k členu companion object
    val instance = MyClass.createInstance() // Použití tovární metody
    instance.doSomething()
}

Výhody:

  • Více sémantické: Umožňuje seskupit související "statické" členy na jednom místě.
  • Flexibilita: Může implementovat rozhraní, což je užitečné pro návrhové vzory.
  • Přístup k soukromým členům: Zjednodušuje implementaci továrních metod a singletonů uvnitř třídy.