Tout d'abord la convention de dénomination des constantes en Kotlin est la même qu'en java (par exemple : MY_CONST_IN_UPPERCASE).
Comment dois-je le créer ?
1. Comme valeur de premier niveau (recommandé)
Vous devez juste mettre votre const à l'extérieur de votre déclaration de classe.
Deux possibilités : Déclarez vos constantes dans votre fichier de classe (vos constantes ont une relation claire avec votre classe).
private const val CONST_USED_BY_MY_CLASS = 1
class MyClass {
// I can use my const in my class body
}
Créez un fichier constants.kt dédié où stocker ces constantes globales (Ici, vous voulez utiliser vos constantes largement à travers votre projet) :
package com.project.constants
const val URL_PATH = "https:/"
Il vous suffit ensuite de l'importer là où vous en avez besoin :
import com.project.constants
MyClass {
private fun foo() {
val url = URL_PATH
System.out.print(url) // https://
}
}
2. Le déclarer dans un objet compagnon (ou une déclaration d'objet)
C'est beaucoup moins plus propre car sous le capot, lorsque le bytecode est généré, un objet inutile est créé :
MyClass {
companion object {
private const val URL_PATH = "https://"
const val PUBLIC_URL_PATH = "https://public" // Accessible in other project files via MyClass.PUBLIC_URL_PATH
}
}
Encore pire. si vous le déclarez comme une val au lieu d'une const (le compilateur générera un objet inutile + une fonction inutile) :
MyClass {
companion object {
val URL_PATH = "https://"
}
}
Note :
En Kotlin, const ne peut contenir que des types primitifs. Si vous voulez lui passer une fonction, vous devez ajouter l'annotation @JvmField. Au moment de la compilation, il sera transformé en variable publique static final. Mais c'est plus lent qu'avec un type primitif. Essayez de l'éviter.
@JvmField val foo = Foo()
5 votes
Si vous voulez quelque chose correspondant à un
public static final
en Java, utilisezconst val
dans votre objet compagnon. Si vous voulez unprivate static final
et un récupérateur public, utilisezval
dans votre objet compagnon.6 votes
Voici le billet de blog qui explique comment définir des constantes en Kotlin : blog.egorand.me/où-est-ce-que-je-mets-mes-constantes-en-kotlin ?
1 votes
Checkout cet article . Il donne une bonne vue d'ensemble des différentes manières de stocker vos constantes, avec les compromis de performance associés.
1 votes
À première vue, Val vs Const