java获取当前方法

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)

java获取当前方法

时间: 2024-10-28 15:08:35

java获取当前方法的相关文章

Java获取路径方法&相对路径读取xml文件方法

Java获取路径方法&相对路径读取xml文件方法 (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用 (3).request.getSession().getServletContext().getRealPath("/");//获取工程的根路径

java ----获取路径的各种方法(总结)

Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 那么针对这个站点的几个基本概念表述如下: 1. web站点的根目录:http://localhost:8080/ 2. web应用程序的的根目录:http://localhost:8080/test/ 3.同级目录:http://localhost:8080/test/articles/article1.jsp和http://localhost:8080/test/artic

Java获取ip地址的几种方法

以下内容介绍下java获取ip地址的几种思路. 1.直接利用java.net.InetAddress类获取,不过这种方法只在windows环境下有效,在linux环境下只能获取localhost地址(即/etc/hosts文件内容) 代码如下: 1 import java.net.InetAddress; 2 3 /** 4 * This method works well in windows system. 5 * In Linux system it returns 127.0.0.1 t

JAVA获取方法参数名的分析(一)

关于题目 首先解释一下题目. 我们知道, Java通过反射,可以从一个类得知它有哪些方法,有哪些变量,也可以知道每个方法中有哪几个什么类型的传入参数.但有一个东西反射取不到,那就是我们对方法传入参数的命名. 取得传入参数的名字有什么意义? 对这个问题的探究,源于在写一个测试类时候的需求.假设我们有一个类需要测试,这个类中有数十个方法.为每个方法编写测试类,将耗费大量的时间和精力.因此我有一种想法,就是通过java的反射,获得这个类所有的方法,再通过传入参数的名字和参数类型,来生成一些符合要求的数

java获取文件大小的方法

目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的available()方法和新的java..nio.*中的FileChannel 下面依次介绍这几种方法: 首先选择一个文件并查看这个文件在windows中显示的大小,为了测试准确性,我这里选取了一个大文件(超过2GB) 查看这个文件在windows中显示的大小: 使用在线转换工具将其转换成字节: 可以看

java获取时间戳的方法

JAVA 获取当前月的初始时间的时间戳 public static long getMonthFirstDay() { Calendar calendar = Calendar.getInstance();// 获取当前日期 calendar.add(Calendar.MONTH, 0); calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 calendar.set(Calendar.HOUR_OF_DAY, 0); calen

关于java获取本地ip的几种方法

关于java获取本地ip的几种方法1.获取本地ip的方法 System.out.println(InetAddress.getLocalHost().getHostAddress()); 2.域名解析ip的方法 System.out.println(InetAddress.getByName("www.sina.com.cn")); 3.获取本地出口ip的方法(局域网NAT或本地找交换机出口ip的方法) 建立通讯TCP,telnet,mina通讯等. Socket client = n

Java 获取指定日期的方法总结 -转

格式化日期 String-->Date  或者 Data-->String SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    Date  date = sdf.parse("2009-11-04");//String-->Date String  sdate  = sdf.format(date );// Data-->String ==================

java 获取键盘输入常用的两种方法

java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine(); input.close(); 方法2: 通过 BufferedReader BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String s = input.readLine(); 原文