Grâce aux multiméthodes, nous pouvons ajouter des méthodes aux classes Java existantes. Ma question est de savoir s'il est possible de redéfinir une méthode spécifique, et comment, à partir du code Clojure. Par exemple, si vous avez la classe suivante,
public class Shape {
public void draw() {
...
}
}
J'aimerais pouvoir exécuter quelque chose pour ajouter une méthode avant, comme ceci :
(attach-to-method Shape/draw :before
(println "... about to draw a shape"))
Et après avoir évalué ce formulaire, tous les appels ultérieurs à draw commenceraient à imprimer une chaîne avant d'effectuer l'appel lui-même.
L'objectif de cet attachement avant/après/autour, un comportement de type AOP, est qu'un cadre appelant cette méthode sur une instance existante puisse être dynamiquement modifié et commencer à exécuter le code nouvellement attaché. J'utilise actuellement AspectJ pour cela, mais j'arrive à un point où l'utilisation d'un compilateur différent n'est pas une option, et je suis curieux de savoir si je peux simplement abandonner AspectJ.