列出正在调用的方法的名称



我想有一个类似反射的解决方案来显示被调用的方法。

的例子:

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进入或离开一个方法时输出类名、方法名和时间戳。

相关内容

  • 没有找到相关文章

最新更新