1.获取当前方法堆栈,我们一般用

StackTraceElement[] stes = Thread.currentThread().getStackTrace();

想要获取当前方法,切记不够灵活,使用数组stes的固定index(网上不少是这样说的,请明辨之)。

让我们来看api怎么说的吧?

getStackTrace

public StackTraceElement[] getStackTrace()
返回一个表示该线程堆栈转储的堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该序列中最新的方法调用。最后一个元素代表堆栈底,是该序列中最旧的方法调用。

如果有安全管理器,并且该线程不是当前线程,则通过 RuntimePermission("getStackTrace") 权限调用安全管理器的 checkPermission 方法,查看是否可以获取堆栈跟踪。

某些虚拟机在某些情况下可能会从堆栈跟踪中省略一个或多个堆栈帧。在极端情况下,没有该线程堆栈跟踪信息的虚拟机可以从该方法返回一个零长度数组。

返回:
StackTraceElement 数组,每个数组代表一个堆栈帧。
抛出:
SecurityException - 如果安全管理器存在,并且其 checkPermission 方法不允许获取线程的堆栈跟踪。
从以下版本开始:
1.5
另请参见:
SecurityManager.checkPermission(java.security.Permission)RuntimePermissionThrowable.getStackTrace()

注意,红色标注的地方,栈顶是最新的方法调用,栈底是最旧的方法调用

2. 实例:

/*TestDumpThread .java*/
public class TestDumpThread {//Dump the current thread stack trace.public static void getCurrentStackTrace() {StackTraceElement[] stes = Thread.currentThread().getStackTrace();for (StackTraceElement element : stes) {System.out.println(element);}}public static void main(String[] args) {getCurrentStackTrace();}
}

结果如下:

java.lang.Thread.getStackTrace(Thread.java:1479)
TestDumpThread.getCurrentStackTrace(TestDumpThread.java:5)
TestDumpThread.main(TestDumpThread.java:12)

转载于:https://www.cnblogs.com/davidwang456/p/3836523.html

java获取当前方法相关推荐

  1. java获取随机数方法_《Java语言程序设计》Java获取随机数方法

    <Java语言程序设计>Java获取随机数方法 在Java中我们可以使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,分别是Random()和Rando ...

  2. java获取文件名方法,利用Java获取文件名、类名、方法名和行号的方法小结

    大家都知道,在C语言中,我们可以通过宏FILE. __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名.类名.方法名.行号,具体代码如下: ...

  3. java 获取调用者方法_java获取调用当前方法的方法名和行数

    java获取调用当前方法的方法名和行数 String className = Thread.currentThread().getStackTrace()[2].getClassName();//调用 ...

  4. Java获取时间戳方法比较

    Java获取当前时间戳有3种方法: //方法 A System.currentTimeMillis(); //方法 B Calendar.getInstance().getTimeInMillis() ...

  5. java 获取 反射 方法 名_乐字节Java反射之一:反射概念与获取反射源头Class

    一.Java反射机制概念 "程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言",如Python, Ruby是动态语言:显然C++,Java,C#不是动态语言,但是JAV ...

  6. java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

    Java中创建String 对象的方法有哪些 发布时间:2020-11-25 16:45:30 来源:亿速云 阅读:71 作者:Leah 这篇文章将为大家详细讲解有关Java中创建String 对象的 ...

  7. java 获取当前方法的名称_Java中获取当前函数名

    有时候我们需要在程序中获取当前运行的函数名,如何简单的做到这点呢?我们可以用getStackTrace轻松搞定. 一提到getStatckTrace多数人会联想到Thowable中的getStackT ...

  8. java获取随机数方法_JAVA获取随机数

    原文链接: http://blog.csdn.net/herrapfel/article/details/1885016 在Java中我们可以使用java.util.Random类来产生一个随机数发生 ...

  9. java 获取私有方法_如何获取java类里的私有方法

    展开全部 利用java的反射机制,以下代码:public class Main { private void fun(){ 32313133353236313431303231363533e4b893 ...

最新文章

  1. Mathematica该注意的两种特殊的输入方式(blanksequence and ruledelayed)
  2. 成功解决absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag 'data_format'
  3. 【CF1063B】Labyrinth [最短路? 01BFS]
  4. 在账户确定类型KOFI没有找到总账科目
  5. python装饰器模块加载后的若干解释
  6. PHP会话技术cookie
  7. DATETIME与TIMESTAMP
  8. 内网穿透工具ngrok的使用
  9. oracle 转换成csv文件,如何将csv转换为oracle中的表
  10. Linux获取本机hostname函数,Linux下获得主机与域名-gethostbyname和gethostbyaddr
  11. 第八课 RNN条件生成与Attention机制
  12. android aoa 串口,沁恒股份USB Android AOA转接概述
  13. sql同时修改两个表的数据_如何用SQL做数据透视表?
  14. clover config_【兵哥小课堂】不借助任何工具将CLOVER引导添加进UEFI的正确姿势
  15. 基于OpenCv的人脸识别(Python完整代码)
  16. Win10华硕atk驱动怎么安装_雨林木风win10系统U盘怎么安装
  17. 【龙格库塔优化算法】基于龙格库塔优化算法求解单目标优化问题含Matlab源码
  18. 阿里云上构建php mysql_手把手教你如何在阿里云服务器上搭建PHP环境?
  19. (原創) 白蘋驚魂記 (iPhone)
  20. 关于png的交错Interlace

热门文章

  1. 下次激活策略10_巅峰武侠卡牌巨制手游乱世江湖1元商城特权bt版今日10:00上线_乱世江湖...
  2. 获取系统版本号_数据库系统原理
  3. 有没有测试水泥稳定性的软件,水泥稳定碎石土7天无侧限抗压强度制件(参考模板)...
  4. html 查询表单,如何让我的HTML表单查询适用于所有表单元素?
  5. tomcat 不支持put 高版本_「MG6_DCT280」湿式七档双离合版本-性价比并不高
  6. 如何用python画一个小房子?
  7. python elasticsearch 入门教程(二) ---全文搜索
  8. 知识图谱学习笔记-PageRank
  9. 598. Range Addition II(Python)
  10. python~文件遍历命令:glob、os.walk