Java 有没有办法获取当前正在执行的方法的名称?
从技术上讲,这将起作用......
String name = new Object(){}.getClass().getEnclosingMethod().getName();
但是,将在编译时创建一个新的匿名内部类(例如YourClass$1.class
)。所以这将创建一个.class
部署此技巧的每个方法的文件。此外,运行时每次调用时都会创建一个未使用的对象实例。因此,这可能是一个可以接受的调试技巧,但它确实会带来巨大的开销。
这个技巧的一个优点是getEnclosingMethod()
回报java.lang.reflect.Method
它可用于检索方法的所有其他信息,包括注释和参数名称。这使得区分具有相同名称的特定方法(方法重载)成为可能。
请注意,根据 JavaDocgetEnclosingMethod()
这个技巧不应该抛出SecurityException
因为内部类应该使用相同的类加载器来加载。因此,即使有安全管理员在场,也无需检查访问条件。
请注意: 需要使用getEnclosingConstructor()
对于构造函数。在(命名)方法之外的块期间,getEnclosingMethod()
回报null
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)