如何获取包含函数的名称[重复]

Posted

技术标签:

【中文标题】如何获取包含函数的名称[重复]【英文标题】:How to get the name of the containing function [duplicate] 【发布时间】:2014-02-23 22:04:18 【问题描述】:

在 C++ 中,您可以使用 __FUNCTION_NAME__ 来获取包含 __FUNCTION_NAME__ 的函数的名称。

Java 中是否有等价物? 可以,在 Java 中,可以使用 this 和反射来做一些事情。还有更简单的吗?

【问题讨论】:

你试过 Thread.currentThread().getStackTrace()[1].getMethodName() 吗? @Alessio:如果有点贵,那就太好了:还有一个候选人作为答案。 @Alessio 这并不总是有效。见***.com/questions/442747/… 你说得对,我在一个项目中使用过,不知道可能不行 【参考方案1】:

Thread.currentThread().getStackTrace() 通常会包含您从中调用它的方法,但存在缺陷

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StackTraceElement.html

【讨论】:

【参考方案2】:
Thread.currentThread().getStackTrace()[ste.length - 1 - depth].getMethodName();

depth = 0(零)将给出当前方法

还有

System.out.println((new Throwable()).getStackTrace()[0].toString());

样本输出:

com.junk.Junk3.main(Junk3.java:12)

【讨论】:

以上是关于如何获取包含函数的名称[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何获取当前工作cs文件的文件名和当前类的名称[重复]

如何从 pg_catalog.pg_proc 获取 Postgres 函数名称以及函数特定名称?

php函数以获取数据,将具有通用字段名称的多个表连接起来并显示输出[重复]

如何获取包含正在运行的 Windows/Linux 的当前磁盘号/名称? [关闭]

如何使用纬度和经度在Android中获取位置名称[重复]

如何使用月份名称获取最近 3 个月的计数,如果该月份没有记录需要使用月份名称获取 0 [重复]