Junior — Middle
Quelles restrictions existent pour les fonctions d'extension dans le langage Kotlin?
sobes.tech IA
Réponse de l'IA
En Kotlin, les fonctions d'extension ont les limitations suivantes :
- Elles ne peuvent pas ajouter de nouvelles propriétés ou états aux classes. Les extensions ne fonctionnent qu'avec des fonctions.
- Les extensions ne modifient pas la classe réelle, mais sont résolues statiquement. Cela signifie que l'appel à l'extension est déterminé par le type de la variable lors de la compilation, et non par le type réel de l'objet lors de l'exécution.
- Il n'est pas possible de redéfinir des méthodes existantes de la classe avec des extensions. Si une méthode du même nom existe déjà, c'est cette méthode de la classe qui sera appelée.
- Les extensions ne peuvent pas être déclarées à l'intérieur de fonctions locales. Elles doivent être déclarées au niveau du fichier, de la classe ou de l'objet.
Exemple de résolution statique des extensions :
open class Base
class Derived : Base()
fun Base.foo() = "Base"
fun Derived.foo() = "Derived"
fun printFoo(b: Base) {
println(b.foo())
}
printFoo(Derived()) // Affichera "Base", car l'extension est choisie selon le type Base
Il est important de prendre cela en compte lors de l'utilisation des fonctions d'extension en Kotlin.