Kotlin Fonctions d'extension aux objets compagnons (apparition de fonctions statiques)


Exemple

Si vous souhaitez étendre une classe, si vous êtes une fonction statique, par exemple pour la classe Something fonction statique ajouter à la recherche fromString , cela ne peut fonctionner que si la classe a un objet compagnon et que la fonction d'extension a été déclarée sur l'objet compagnon :

class Something {
    companion object {}
}

class SomethingElse {
}

fun Something.Companion.fromString(s: String): Something = ... 

fun SomethingElse.fromString(s: String): SomethingElse = ... 

fun main(args: Array<String>) {
    Something.fromString("") //valid as extension function declared upon the
                             //companion object

    SomethingElse().fromString("") //valid, function invoked on instance not
                                   //statically

    SomethingElse.fromString("") //invalid
}