一尘不染

Java 获取当前执行方法的名称

java

有没有办法获取Java中当前正在执行的方法的名称?


阅读 1510

收藏
2020-02-28

共1个答案

一尘不染

从技术上讲这将起作用…

String name = new Object(){}.getClass().getEnclosingMethod().getName();

但是,将在编译时创建一个新的匿名内部类(例如YourClass$1.class)。因此,这将为.class每个部署此技巧的方法创建一个文件。另外,在运行时每次调用时都会创建一个其他未使用的对象实例。因此,这可能是可以接受的调试技巧,但确实会带来大量开销。

该技巧的一个优点是getEncosingMethod()返回java.lang.reflect.Method值可用于检索方法的所有其他信息,包括注释和参数名称。这样就可以区分具有相同名称的特定方法(方法重载)。

请注意,根据JavaDocgetEnclosingMethod()技巧,不应SecurityException使用相同的类加载器来加载内部类。因此,即使存在安全管理器,也无需检查访问条件。

必须getEnclosingConstructor()用于构造函数。在(命名的)方法之外的块中,getEnclosingMethod()返回null

2020-02-28