
Les extensions en Kotlin permettent d’ajouter des fonctionnalités à des classes existantes sans avoir à hériter de ces dernières.
Cela nous permet de conserver l’encapsulation des classes originales tout en y ajoutant des fonctionnalités supplémentaires.
Les extensions peuvent être utilisées pour ajouter des méthodes, des propriétés ou des opérateurs à des classes existantes.
Pour créer une extension, il faut utiliser la syntaxe suivante :
fun <TypeDeLaClasseÀÉtendre>.nomDeLaFonction(paramètres) : TypeDeRetour {
// corps de la fonction
}
Voici un exemple d’une extension de la classe String
qui ajoute une méthode double
qui renvoie le contenu de la chaîne de caractères doublé :
fun String.double() : String {
return this + this
}
val original = "Bonjour, "
val double = original.double()
println(double) // affiche "Bonjour, Bonjour, "
Il est également possible de créer des propriétés d’extension :
fun main(args: Array<String>)
{
class testIsBlank
{
val String.isBlank: Boolean
get() = this.isEmpty() || this.trim().isEmpty()
}
val testString = " "
println(testString.isBlank()) // affiche true
}
Extension d’une liste pour ajouter une fonction swap
permettant d’échanger l’emplacement de deux éléments dans la liste :
fun main(args: Array<String>)
{
fun <T> MutableList<T>.swap(firstIndex: Int, secondIndex: Int) {
val tmp = this[firstIndex]
this[firstIndex] = this[secondIndex]
this[secondIndex] = tmp
}
val numbers = mutableListOf(1, 2, 3, 4, 5)
numbers.swap(0, 4)
println(numbers) // affiche [5, 2, 3, 4, 1]
}
Il est important de noter que dans les exemples ci-dessus, les extensions ont été créées pour des classes spécifiques (MutableList
, Int
, Boolean
), mais il est possible de créer des extensions pour n’importe quelle classe en utilisant la syntaxe appropriée.