Sobes.tech
Junior — Middle

Je objekt společník společný pro všechny vytvořené instance třídy?

sobes.tech AI

Odpověď od AI

Ano, companion object (společný objekt) v Kotlinu je sdílený všemi instancemi třídy. Je to jakýsi singleton spojený s třídou, nikoliv s konkrétní instancí.

Companion object umožňuje definovat funkce a vlastnosti, které lze volat bez vytvoření instance třídy, podobně jako statické metody a pole v Javě.

Příklad:

class MyClass {
    companion object {
        val sharedValue = 42
        fun printValue() {
            println("Sdílená hodnota: $sharedValue")
        }
    }
}

fun main() {
    println(MyClass.sharedValue) // 42
    MyClass.printValue()        // Sdílená hodnota: 42
}

Zde jsou sharedValue a printValue sdílené všemi instancemi MyClass.