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

Java 列出正在调用的方法的名称,java,reflection,Java,Reflection,我希望有一个类似反射的解决方案来显示调用的方法 例如: 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

我希望有一个类似反射的解决方案来显示调用的方法

例如:

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需要一些时间,但它很好地满足了您的需求。

如果您想在不污染代码的情况下实现这一点,就必须构建探查器代理

看看这个,它告诉你怎么做。具体来说,请看本文下面的评测方面

清单2是一个分析方面,可用于在JVM每次进入或离开方法时输出类名、方法名和时间戳