作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理具有许多子类(称它们为 A
和 B
)的源代码,它们实现了一个通用的interface Visitor
,带有方法 visitProgram
。当任何子类遇到此方法(即 A.visitProgram
或 B.visitProgram
)时,有什么方法可以中断吗?替代语言解决方案会很好,但我无法重写现有源代码。
最佳答案
既然你在调试,我假设你可以添加一些新代码并构建整个东西。
也就是说,您可以使用面向方面编程 (AOP) 来获取捕获 visitProgram 执行的切入点,理论上您可以将断点放在切入点中。您可以将 AOP 视为一种横向切入程序的技术(与构建“垂直”结构的 OOP 相反)。
在这种情况下,您希望在每次运行 visitProgram
(Visitor
接口(interface)的任何实例化)之前执行一些操作。这是一个横向削减,因此 AOP 应该适合您的需要。
基本上,您将拥有一个函数,您可以在其中设置一个断点,以便任何时候 visitProgram
被调用,您的程序将在它执行之前停止。
我建议使用 Spring AOP ,它非常简单,只需按照手册中的设置说明进行操作即可。您的切入点应如下所示:
@Aspect
public class BeforeVisitProgram {
@Before("visitProgram()")
public void doStuff() {
// break in here
}
}
关于java - 如何向由许多子类实现的接口(interface)方法添加断点或自定义代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400393/
我是一名优秀的程序员,十分优秀!