StackTraceElement
java.lang.Object
|—java.lang.StackTraceElement
public final class StackTraceElement
extends Object
implements Serializable
堆栈跟踪中的一个元素,由 Throwable#getStackTrace() 返回。 每个元素代表一个堆栈帧。 除了栈顶的栈帧外,所有栈帧都代表一个方法调用。 堆栈顶部的帧表示生成堆栈跟踪的执行点。 通常,这是创建对应于堆栈跟踪的 throwable 的点。
构造函数摘要
构造函数 | 描述 |
---|---|
StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber) | 创建表示指定执行点的堆栈跟踪元素。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
boolean | equals(Object obj) | 如果指定对象是另一个 StackTraceElement 实例,表示与此实例相同的执行点,则返回 true。 |
String | getClassName() | 返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。 |
String | getFileName() | 返回包含此堆栈跟踪元素表示的执行点的源文件的名称。 |
int | getLineNumber() | 返回包含此堆栈跟踪元素表示的执行点的源行的行号。 |
String | getMethodName() | 返回包含此堆栈跟踪元素表示的执行点的方法的名称。 |
int | hashCode() | 返回此堆栈跟踪元素的哈希码值。 |
boolean | isNativeMethod() | 如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。 |
String | toString() | 返回此堆栈跟踪元素的字符串表示形式。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造函数详细信息
StackTraceElement
public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)
创建表示指定执行点的堆栈跟踪元素。
参数:
参数名称 | 参数描述 |
---|---|
declaringClass | 包含堆栈跟踪元素表示的执行点的类的完全限定名称 |
methodName | 包含由堆栈跟踪元素表示的执行点的方法的名称 |
fileName | 包含堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则返回 null |
lineNumber | 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。 值为 -2 表示包含执行点的方法是本机方法 |
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 declaringClass 或 methodName 为 null |
方法详情
getFileName
public String getFileName()
返回包含此堆栈跟踪元素表示的执行点的源文件的名称。 通常,这对应于相关类文件的 SourceFile 属性(根据 Java 虚拟机规范,第 4.7.7 节)。 在某些系统中,名称可能指代文件以外的某些源代码单元,例如源存储库中的条目。
返回:
包含此堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为 null。
getLineNumber
public int getLineNumber()
返回包含此堆栈跟踪元素表示的执行点的源行的行号。 通常,这是从相关类文件的 LineNumberTable 属性派生的(根据 Java 虚拟机规范,第 4.7.8 节)。
返回:
包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。
getClassName
public String getClassName()
返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。
返回:
包含此堆栈跟踪元素表示的执行点的类的完全限定名称。
getMethodName
public String getMethodName()
返回包含此堆栈跟踪元素表示的执行点的方法的名称。 如果执行点包含在实例或类初始化程序中,则此方法将根据 Java 虚拟机规范的第 3.9 节返回适当的特殊方法名称,<init> 或 <clinit>。
返回:
包含此堆栈跟踪元素表示的执行点的方法的名称。
isNativeMethod
public boolean isNativeMethod()
如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。
返回:
如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则为 true。
toString
public String toString()
返回此堆栈跟踪元素的字符串表示形式。此字符串的格式取决于实现,但以下示例可被视为典型:
- “MyClass.mash(MyClass.java:9)” – 这里,“MyClass”是包含此堆栈跟踪元素表示的执行点的类的完全限定名称,“mash”是包含执行点,“MyClass.java”是包含执行点的源文件,“9”是包含执行点的源行的行号。
- “MyClass.mash(MyClass.java)” – 同上,但行号不可用。
- “MyClass.mash(Unknown Source)” – 同上,但文件名和行号都不可用。
- “MyClass.mash(Native Method)” – 同上,但是文件名和行号都不可用,包含执行点的方法已知是本地方法。
覆盖:
类 Object 中的 toString
返回:
对象的字符串表示形式。
equals
public boolean equals(Object obj)
如果指定对象是另一个 StackTraceElement 实例,表示与此实例相同的执行点,则返回 true。 两个堆栈跟踪元素 a 和 b 相等当且仅当:
equals(a.getFileName(), b.getFileName()) &&
a.getLineNumber() == b.getLineNumber()) &&
equals(a.getClassName(), b.getClassName()) &&
equals(a.getMethodName(), b.getMethodName())
其中 equals 具有 Objects.equals 的语义。
覆盖:
类 Object 中的等于
参数:
参数名称 | 参数描述 |
---|---|
obj | 要与此堆栈跟踪元素进行比较的对象。 |
返回:
如果指定对象是另一个 StackTraceElement 实例,则表示与此实例相同的执行点,则为 true。
hashCode
public int hashCode()
返回此堆栈跟踪元素的哈希码值。
覆盖:
类 Object 中的 hashCode
返回:
此对象的哈希码值。