【问题标题】: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 这并不总是有效。见stackoverflow.com/questions/442747/…
  • 你说得对,我在一个项目中使用过,不知道可能不行

标签: java


【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2014-05-19
      • 1970-01-01
      • 2017-06-08
      • 2014-05-16
      相关资源
      最近更新 更多