Java StackTraceElement 类



介绍

Java StackTraceElement 类元素代表单个栈帧。除栈顶的栈帧外,所有栈帧都表示方法调用。栈顶的栈帧表示生成堆栈跟踪的执行点。

类声明

以下是java.lang.StackTraceElement类的声明:

public final class StackTraceElement
   extends Object
      implements Serializable

类构造函数

序号 构造函数和描述
1

StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)

这将创建一个代表指定执行点的堆栈跟踪元素。

类方法

序号 方法和描述
1 boolean equals(Object obj)

如果指定的对象是另一个代表与该实例相同的执行点的StackTraceElement实例,则此方法返回true。

2 String getClassName()

此方法返回包含此堆栈跟踪元素所代表的执行点的类的完全限定名称。

3 String getFileName()

此方法返回包含此堆栈跟踪元素所代表的执行点的源文件的名称。

4 int getLineNumber()

此方法返回包含此堆栈跟踪元素所代表的执行点的源代码行的行号。

5 String getMethodName()

此方法返回包含此堆栈跟踪元素所代表的执行点的方法的名称。

6 int hashCode()

此方法返回此堆栈跟踪元素的哈希代码值。

7 boolean isNativeMethod()

如果包含此堆栈跟踪元素所代表的执行点的方法是本地方法,则此方法返回true。

8 String toString()

此方法返回此堆栈跟踪元素的字符串表示形式。

继承的方法

此类继承自以下类的方法:

  • java.lang.Object

示例:使用 StackTraceElement 获取当前线程类名

以下示例演示了 Java StackTraceElement getClassName() 方法的用法。在这个程序中,我们定义了一个名为 function2() 的函数,它从当前线程的 StackTraceElement 获取类名。另一个名为 function1() 的函数用于实例化 StackTraceElementDemo 类并调用 function2() 方法。在 main 方法中,我们调用了 function1() 方法,并打印结果。

package com.tutorialspoint;

public class StackTraceElementDemo {

   // main method
   public static void main(String[] args) {
      // call function1() to invoke function2()     
      function1();
   }
   
   // function1() is to invoke function2()
   // using StackTraceElementDemo object
   public static void function1() {
      new StackTraceElementDemo().function2();
   }
 
   // print the class name of current thread using StackTraceElement
   public void function2() {
      System.out.print("class name : ");
      System.out.print(Thread.currentThread().getStackTrace()[1].
      getClassName());
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

class name : com.tutorialspoint.StackTraceElementDemo
广告