J'essaie de réécrire mon application Android sur Kotlin et que j'ai rencontré un problème lors de la conversion de la classe contractuelle de contenu. J'ai donc une classe de contrat simple (des trucs par défaut comme le type de contenu et les URIS de contenu sont omis):
object BirthdayContract {
class Contacts : BaseColumns {
companion object {
val NAME = "Name"
val BIRTH = "Birth"
val IMAGE = "Image"
}
}
}
4 Réponses :
Comme ce n'est pas ainsi que vous accédez naturellement aux constantes de Java, il existe quelques façons d'exposer directement le champ: P>
nom code> est une propriété et par défaut, son champ de support contient un accès privé. Mais comme c'est une propriété, il y a un getter pour cela: getname () code>. p>
const code> : < Code> const val name = "nom" code> li>
@jvmfield code> < / a> Annotation: @jvmfield val name = "nom" code> li>
ol>
@Jvmfield fonctionne bien pour moi, merci! Cependant, "const" et "@jvmstatic" n'affectent rien.
envisagez d'utiliser un objet clair fort> comme cela.: object Contract {
object Contacts {
val NAME = "Name"
val BIRTH = "Birth"
val IMAGE = "Image"
}
}
Vous pouvez le faire avec un @jvmstatic
object BirthdayContract {
object Contacts {
const val NAME = "Name"
const val BIRTH = "Birth"
const val IMAGE = "Image"
}
}
//Java
BirthdayContract.Contacts.NAME
Basecolumns ont une pièce d'identité et comptent, je pense que c'est la raison pour laquelle Noktigula l'étends.
Pour exposer les constantes comme champs, annotant-les avec alors vous pouvez les utiliser à partir de Java comme ceci: p> @jvmfield code> String name = Contacts.NAME;
Veuillez fournir un MCVE . J'ai collé votre
anniversaire code> dans un nouveau fichier kotlin, supprimé `: basecolumns` tel qu'il ne compile pas avec elle et crée une fonction qui accède àanniversairetract.contacts.name code>. Je crois que vous devez fournir plus d'informations et / ou d'exemples mis à jour qui compilent et démontrent le problème que vous voyez. Merci.@ mfulton26 J'ai fait la même chose - créé un nouveau fichier .kt et copié mon code de kotlin à l'intérieur. Il compile sans erreurs. Il n'y avait aucun problème avec l'interface Basecolumns. Quel genre d'erreur avez-vous?