【发布时间】:2010-08-09 03:00:10
【问题描述】:
使用多方法,我们可以将方法添加到现有的 Java 类中。我的问题是是否可以从 Clojure 代码重新定义一种特定的方法,以及如何重新定义。例如,如果您有以下课程,
public class Shape {
public void draw() {
...
}
}
我希望能够运行一些东西来添加一个 before 方法,例如:
(attach-to-method Shape/draw :before
(println "... about to draw a shape"))
在评估该表单之后,所有后续的 draw 调用都会在执行调用之前开始打印一个字符串。
我对之前/之后/周围的这种附加,类似 AOP 的行为的目的是,在现有实例上调用该方法的框架可以动态更改并开始运行新附加的代码。目前我正在为此使用 AspectJ,但我已经到了无法选择使用不同编译器的地步,我很想知道我是否可以放弃 AspectJ。
【问题讨论】: