我想知道有没有办法使用“// do something”部分中的方面来获取代码?
提前致谢。
图兰。
public class Test {
private class InnerTest {
public InnerTest() {
JButton j = new JButton("button");
j.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//do something
}
});
}
}
}
答案 0 :(得分:7)
您可以使用或 in code 切入点中的来匹配包含的类,并使用 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));
如果您只想在内部类中匹配对actionPerformed()的调用,则可以省略cflow子句。
值得注意的是,如果您感兴趣的是匹配任何actionPerformed()方法的执行,这就足够了:
pointcut innerTest():
execution(void java.awt.event.ActionListener+.actionPerformed(ActionEvent));