我想知道有没有办法使用"//做某事"部分中的方面来达到代码?
提前致谢.
图兰.
public class Test {
private class InnerTest {
public InnerTest() {
JButton j = new JButton("button");
j.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//do something
}
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以使用内或withincode切入点到包含类匹配,并且cflow的切入点到addActionListener方法,()方法的执行匹配,则结合起来,与一个执行切入点,以匹配actionPerformed()方法的主体.
例如,此切入点将仅匹配类Test的内部类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));
Run Code Online (Sandbox Code Playgroud)
如果您只想在内部类中匹配对actionPerformed()的调用,则可以省略cflow子句.
值得注意的是,如果您感兴趣的是匹配任何actionPerformed()方法的执行,这就足够了:
pointcut innerTest():
execution(void java.awt.event.ActionListener+.actionPerformed(ActionEvent));
Run Code Online (Sandbox Code Playgroud)