11 votes

Champs publics pour la compatibilité avec Java

J'ai trouvé un intérêt récent à Kotlin en tant que langage, parce que la plateforme pour laquelle nous développons est basée sur Java 6 et n'a donc pas le sucre syntaxique que les dernières années ont apporté à Java.

Il y a une chose qui rend impossible l'utilisation de Kotlin par rapport à Java dans le développement, c'est que la plateforme pour laquelle nous développons utilise une certaine réflexion en interne et exige que les membres soient publics. Sinon, cela ne fonctionnera pas.

Ainsi, le bytecode généré à partir du fichier Kotlin produit en fait des getters et setters publics, alors que les champs eux-mêmes restent privés.

Existe-t-il un moyen de contourner ce problème afin d'obtenir de véritables champs publics ?

Je suis conscient de l'échec de la conception qui nécessite des champs publics, mais le système est une sorte de boîte noire pour nous, nous ne pouvons pas changer le fait qu'il doit être ainsi.

16voto

marstran Points 9298

L'annotation @JvmField devrait vous aider. Il fait en sorte que le compilateur Kotlin expose la propriété en tant que champ sur la JVM. Voir ici : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-jvm-field/

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