Java StackTraceElement instance code,
This article focuses on Java StackTraceElement.
- StackTrace saves the call information of methods in the form of stacks.
- Use the Thread. currentThread (). getStackTrace () method to obtain the StackTrace information of the current Thread. This method returns a StackTraceElement array.
- If methodA in the thread calls methodB, methodA first enters the stack methodB and then re-enters the stack. The first element of the array stores the top element of the stack, and the last element stores the bottom element of the stack. The order is the opposite to that of the call stack.
- The file name of the current method, the Class Name of the current method, and the name of the method are saved in the element with the subscript of 2 in the StackTraceElement array. In addition, the number of rows called by the method can be obtained. This feature can be used to design the Log Module.
Instance:
package com.demo.test;public class StackTraceDemo {public static void testA() {testB();}public static void testB() {StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();System.out.println("-------> StackTraceElement[]");for (int i = 0; i < stackTraceElements.length; i++) {System.out.println("-------> " + i);System.out.println(stackTraceElements[i]);System.out.println("StackTraceElement.getClassName() => " + stackTraceElements[i].getClassName());System.out.println("StackTraceElement.getFileName() => " + stackTraceElements[i].getFileName());System.out.println("StackTraceElement.getLineNumber() => " + stackTraceElements[i].getLineNumber());System.out.println("StackTraceElement.getMethodName() => " + stackTraceElements[i].getMethodName());System.out.println("StackTraceElement.isNativeMethod() => " + stackTraceElements[i].isNativeMethod());}}public static String getMethodName() {StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();if(stackTraceElements.length > 2) {return stackTraceElements[2].getMethodName();}return null;}public static void main(String[] args) {testA();System.out.println("\nthis's method name is " + getMethodName());}}Output:
-------> StackTraceElement []
-------> 0
Java. lang. Thread. getStackTrace (Unknown Source)
StackTraceElement. getClassName () => java. lang. Thread
StackTraceElement. getFileName () => null
StackTraceElement. getLineNumber () =>-1
StackTraceElement. getMethodName () => getStackTrace
StackTraceElement. isNativeMethod () => false
-------> 1
Com. demo. test. StackTraceDemo. testB (StackTraceDemo. java: 10)
StackTraceElement. getClassName () => com. demo. test. StackTraceDemo
StackTraceElement. getFileName () => StackTraceDemo. java
StackTraceElement. getLineNumber () => 10
StackTraceElement. getMethodName () => testB
StackTraceElement. isNativeMethod () => false
-------> 2
Com. demo. test. StackTraceDemo. testA (StackTraceDemo. java: 6)
StackTraceElement. getClassName () => com. demo. test. StackTraceDemo
StackTraceElement. getFileName () => StackTraceDemo. java
StackTraceElement. getLineNumber () => 6
StackTraceElement. getMethodName () => testA
StackTraceElement. isNativeMethod () => false
-------> 3
Com. demo. test. StackTraceDemo. main (StackTraceDemo. java: 32)
StackTraceElement. getClassName () => com. demo. test. StackTraceDemo
StackTraceElement. getFileName () => StackTraceDemo. java
StackTraceElement. getLineNumber () => 32
StackTraceElement. getMethodName () => main
StackTraceElement. isNativeMethod () => false
This's method name is main
Summary
The above is all about the Java StackTraceElement instance code in this article. I hope it will be helpful to you. If you are interested, you can continue to refer to other related topics on this site. If you have any shortcomings, please leave a message. Thank you for your support!