Bonjour à toutes et à tous:

soit une classe dont la classe est "clazz"
et deux variables de type String: "originalMethodName" et "newMethodName"

l'objectif est de renommer une méthode "originalMethodName" et de lui donner un nom supplémentaire "newMethodName"
(il ne s'agit pas de remplacer l'ancienne méthode mais de rajouter la même méthode avec un nom différent)

les codes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
// ne marche pas! je croyais pourtant
clazz.metaClass."$newMethName" = clazz.metaClass.&"$originalMethName"
//marchotte mais besogneux et pose problème si un argument vraiment à null
clazz.metaClass."$newMethName" = { it== null? delegate."$originalMethName"():delegate."$originalMethName"(*it)}
quelqu'un aurait une expression plus élégante qui marche avec toutes les méthodes d'instance (quelque soit leur nombre de paramètres) ?
A que merci!