Les extensions en Kotlin

Kotlin

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut
%d blogueurs aiment cette page :