Avec Groovy, il est possible d'invoquer une méthode de manière dynamique sur un objet Java ou Groovy ; c'est pouvoir appeler une méthode à l'exécution, simplement à partir de la connaissance de son nom, et en lui transmettant des arguments. Ce nom de méthode peut être obtenu depuis un fichier externe comme un fichier configuation par exemple.
La méthode permettant de réaliser cet appel sur tout objet Java ou Groovy est invokeMethod. Voici un premier exemple sur un objet Java Date :
Si vous exécutez ce code (dans la console Groovy par exemple), vous obtiendrez la date en cours au format GMT.
Prenons maintenant comme exemple une classe Groovy définie par le code ci-dessous :
public methode1(param) {
println "methode1 invoquée avec le paramètre $param"
}
public methode2(param1, param2) {
println "methode2 invoquée avec les paramètres $param1 et $param2"
}
public closure1 = { param ->
println "closure1 appelé avec le paramètre $param"
}
}
obj = new MaClasse()
Ici nous appelons methode1 avec un argument :
Comment transmettre plusieurs arguments ? En voici un exemple :
Pour terminer, montrons qu'il est aussi possible d'invoquer une closure de manière dynamique.