列出要调用的方法的名称

Dav*_*ank 4 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
        new Foo().bar(); 
        new Y().x();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出应该是:

1. Foo.bar
   1.2 Y.x
2. Y.x
Run Code Online (Sandbox Code Playgroud)

最好可能有一个事件处理程序,每次调用一个方法时都会触发该事件处理程序(并且某些信息可以作为参数传递).

PS:我不想在生产环境中使用它,我只需要在骨架应用程序中显示输出而不需要虚拟复制粘贴.

Kai*_*Kai 7

我将使用aspectj来定义为每个方法调用写入日志消息的方面.您可以在此处找到示例:使用AspectJ跟踪Java方法执行.或者在这里:使用AspectJ进行日志记录

此解决方案的优点是您不必对代码进行任何更改.你需要一些时间才能进入aspectj,但它很好地满足了你的要求.