2 votes

Pourquoi l'objet Companion n'est pas accessible depuis le code Java ?

Comme nous le savons, Kotlin et Java sont inter-opérables. Lorsque j'essaie d'accéder à une variable statique Java à l'intérieur du code Kotlin, cela fonctionne, mais lorsque j'essaie d'accéder à un objet compagnon en Java, cela ne fonctionne pas.

3voto

Joffrey Points 6838

Il n'y a pas de statics en Kotlin en soi.

Les propriétés de l'objet compagnon peuvent être accédées en Java en se référant explicitement à l'instance Companion:

class MyKotlinClass {
    companion object {
        val someProperty = 42
    }
}

En Java:

int someProperty = MyKotlinClass.Companion.getSomeProperty();

Vous pouvez également forcer Kotlin à générer du bytecode avec des membres statiques (pour Java) en utilisant une annotation spécifique à la JVM:

class MyKotlinClass {
    companion object {
        @JvmStatic
        val someProperty = 42
    }
}

En Java:

int someProperty = MyKotlinClass.getSomeProperty();

1voto

Agent_L Points 1583

Vous devez spécifier Companion explicitement. Java:

    MyFragment newFragment = MyFragment.Companion.newInstance();

C'est parce que les méthodes du compagnon ne sont PAS statiques. Le compagnon est statique, mais ses méthodes sont des méthodes d'instance régulières.

0voto

Saurabh Dhage Points 79

Vous avez juste besoin d'ajouter l'annotation JvmStatic

objet compagnon{
    @JvmStatic
    val x=10
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X