我不知道有没有达到使用“//做些什么”的部分方面代码的方法吗?
提前致谢。
图兰。
public class Test {
private class InnerTest {
public InnerTest() {
JButton j = new JButton("button");
j.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//do something
}
});
}
}
}
可以使用内和withincode切入点到包含类匹配,并且cflow的切入点到addActionListener方法,()方法的执行匹配,则结合起来,与一个执行切入点,以匹配actionPerformed()方法的主体。
例如,这将切入点仅在类测试的内部类InnerTest匹配actionPerformed方法的执行(假设包是test
),并仅在addActionListener方法,方法的执行的流程:
pointcut innerTest(): within(test.Test.InnerTest) &&
cflow(execution(public void javax.swing.JButton.addActionListener(java.awt.event.ActionListener))) &&
execution(void actionPerformed(ActionEvent));
如果你只在内部类匹配的actionPerformed()调用有兴趣的可以省略cflow的条款。
值得一提的是,如果你有兴趣的是匹配任何actionPerformed()方法的执行,这样就足够了:
pointcut innerTest():
execution(void java.awt.event.ActionListener+.actionPerformed(ActionEvent));