gpt4 book ai didi

inner-classes - AspectJ内部类连接点

转载 作者:行者123 更新时间:2023-12-04 05:40:24 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以使用“//做某事”部分中的方面来实现代码?

提前致谢。

图兰

public class Test {
private class InnerTest {
public InnerTest() {
JButton j = new JButton("button");
j.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//do something
}
});
}
}
}

最佳答案

您可以使用内部或内部代码切入点匹配包含的类,使用cflow切入点匹配addActionListener()方法的执行,然后将其与执行切入点组合以匹配actionPerformed()方法的主体。

例如,此切入点将仅在Test类的内部类InnerTest(假定包为test)内并且仅在addActionListener方法的执行流程内匹配actionPerformed方法的执行:

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));

关于inner-classes - AspectJ内部类连接点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com