Le premier exemple (avec le champ const) peut être utilisé pour les attributs. Cas populaire: déclarez tous les chemins de l'API Web dans le fichier unique et référencez-le à partir des contrôleurs avec un tel code: "@RequestMapping (path = arrayOf (WebPathConstants.MapApiPath))" (attribut Spring Boot)
Manushin Igor
Salut les gars! Savez-vous si ce @JvmField est toujours nécessaire? J'utilise ceci dans Android et il affiche un avertissement de peluche indiquant que "const" peut être utilisé à la place. Je l'ai changé en const et la classe java qui l'utilise n'a aucun problème.
Leandro Ocampo
1
@LeandroOcampo c'est toujours nécessaire dans le cas où vous avez un champ statique mutable, const val- compilez la constante de temps et à coup sûr, elle peut être utilisée en remplacement @JvmField valdans certains cas. Cela ne fonctionne pas si la valeur est calculée au moment de l'exécution, ou si ce n'est pas un type primitif ou une chaîne. Ref: kotlinlang.org/docs/reference/…
Ruslan
36
si vous avez une implémentation dans Hello, utilisez companion objectdans une classe
classHello{
companion object{
val MAX_LEN =1+1}}
if Helloest un pur objet singleton
objectHello{
val MAX_LEN =1+1}
si les propriétés sont des constantes à la compilation, ajoutez un constmot - clé
objectHello{const val MAX_LEN =20}
si vous souhaitez l'utiliser en Java, ajoutez une @JvmStaticannotation
Réponses:
Selon la documentation de Kotlin , c'est équivalent:
Usage:
Il s'agit également d'une propriété finale statique (champ avec getter):
Et enfin c'est le champ final statique:
la source
const val
- compilez la constante de temps et à coup sûr, elle peut être utilisée en remplacement@JvmField val
dans certains cas. Cela ne fonctionne pas si la valeur est calculée au moment de l'exécution, ou si ce n'est pas un type primitif ou une chaîne. Ref: kotlinlang.org/docs/reference/…si vous avez une implémentation dans
Hello
, utilisezcompanion object
dans une classeif
Hello
est un pur objet singletonsi les propriétés sont des constantes à la compilation, ajoutez un
const
mot - clési vous souhaitez l'utiliser en Java, ajoutez une
@JvmStatic
annotationla source
Pour moi
était trop passe-partout. Je mets simplement les champs finaux statiques au-dessus de ma classe comme ceci
la source
private
), cette définition est la plus concise.