我正在研究具有许多子类(称为AB)的子源,这些子类使用方法interface Visitor实现了常见的visitProgram。当任何子类使用此方法(即A.visitProgramB.visitProgram)时,是否有任何中断方法?可以使用其他语言解决方案,但是我不能重写现有的源代码。

最佳答案

由于您正在调试,因此我假设您可以添加一些新代码并构建整个内容。

就是说,您可以使用面向方面的编程(AOP)来获取捕获visitProgram的执行的切入点,并且从理论上讲,您可以将断点放在切入点中。您可以将AOP视为横向切入程序的技术(与构建“垂直”结构的OOP相反)。

在这种情况下,您想在每次运行visitProgramVisitor接口的任何实例化)之前执行一些操作。这是横向切割,因此AOP应该适合您的需求。

基本上,您将具有一个函数,可以在其中设置一个断点,以便在调用visitProgram时,程序将在执行之前立即暂停。

我建议使用Spring AOP,这非常简单,只需按照手册中的说明进行操作即可。您的切入点应如下所示:

@Aspect
public class BeforeVisitProgram {

    @Before("visitProgram()")
    public void doStuff() {
      // break in here
    }

}

10-05 22:41