Réponses:
Selon la documentation de Kotlin , c'est équivalent:
class Hello {
companion object {
const val MAX_LEN = 20
}
}
Usage:
fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}
Il s'agit également d'une propriété finale statique (champ avec getter):
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}
Et enfin c'est le champ final statique:
class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}
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
, utilisez companion object
dans une classe
class Hello {
companion object {
val MAX_LEN = 1 + 1
}
}
if Hello
est un pur objet singleton
object Hello {
val MAX_LEN = 1 + 1
}
si les propriétés sont des constantes à la compilation, ajoutez un const
mot - clé
object Hello {
const val MAX_LEN = 20
}
si vous souhaitez l'utiliser en Java, ajoutez une @JvmStatic
annotation
object Hello {
@JvmStatic val MAX_LEN = 20
}
Pour moi
object Hello {
const val MAX_LEN = 20
}
était trop passe-partout. Je mets simplement les champs finaux statiques au-dessus de ma classe comme ceci
val MIN_LENGTH = 10
class MyService{
}
private
), cette définition est la plus concise.