我想有一个类似反射的解决方案来显示被调用的方法。
的例子:
public class Foo {
public void bar() {
new Y().x();
}
}
public class Y {
public void x() {
}
}
public class Main {
public static void main(String[] args) {
// SETTING UP THE MAGIC
new Foo().bar();
new Y().x();
}
}
输出应该是:
1. Foo.bar
1.2 Y.x
2. Y.x
最好有一个事件处理程序,在每次调用方法时触发(一些信息可以作为参数传递)。
PS:我不想在生产环境中使用这个,我只需要在一个骨架应用中显示输出,而不需要复制粘贴。
我将使用aspectj来定义一个方面,它为每个方法调用写入日志消息。您可以在这里找到一个示例:使用AspectJ跟踪Java方法执行。使用AspectJ进行日志记录
该解决方案的优点是您不必对代码进行任何更改。您将需要一些时间来了解aspectj,但是它非常符合您的要求。
如果您想在不污染代码的情况下实现这一点,则必须构建一个分析器代理。
看看这篇文章,它向您展示了如何做到这一点。具体来说,请查看文章中较低的剖析方面。
清单2是一个分析方面,可用于每次JVM进入或离开一个方法时输出类名、方法名和时间戳。