Sobes.tech
Junior — Middle

Quel bytecode est généré pour déclarer un objet compagnon en Kotlin lors de la compilation dans un projet Java?

sobes.tech IA

Réponse de l'IA

En Kotlin, lors de la compilation en bytecode JVM, la déclaration companion object est transformée en une classe imbriquée statique nommée Companion. Cette classe contient tous les membres du companion object sous forme de méthodes et de champs ordinaires.

Dans le code Java, pour accéder aux membres du companion object, on utilise une référence au champ statique Companion de la classe externe.

Exemple en Kotlin :

class MyClass {
    companion object {
        fun foo() = "Hello"
    }
}

Le bytecode compilé contiendra la classe MyClass$Companion avec la méthode foo(), et dans MyClass, il y aura un champ statique Companion de type MyClass$Companion.

En Java, cela ressemble à ceci :

MyClass.Companion.foo();

Ainsi, le companion object est implémenté comme un singleton d'une classe imbriquée accessible via un champ statique.