public final class StackTraceElement extends Object implements Serializable
Throwable.getStackTrace()返回。
每个元素表示单个堆栈帧。
堆栈顶部除堆栈之外的所有堆栈都表示方法调用。
堆栈顶部的帧表示生成堆栈跟踪的执行点。
通常,这是创建与堆栈跟踪相对应的throwable的点。
| Constructor and Description |
|---|
StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)
创建表示指定执行点的堆栈跟踪元素。
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object obj)
如果指定的对象是另一个
StackTraceElement与该实例相同的执行点的
StackTraceElement实例,则返回true。
|
String |
getClassName()
返回包含由该堆栈跟踪元素表示的执行点的类的完全限定名称。
|
String |
getFileName()
返回包含由该堆栈跟踪元素表示的执行点的源文件的名称。
|
int |
getLineNumber()
返回包含由该堆栈跟踪元素表示的执行点的源行的行号。
|
String |
getMethodName()
返回包含由该堆栈跟踪元素表示的执行点的方法的名称。
|
int |
hashCode()
返回此堆栈跟踪元素的哈希码值。
|
boolean |
isNativeMethod()
如果包含由此堆栈跟踪元素表示的执行点的方法是本机方法,则返回true。
|
String |
toString()
返回此堆栈跟踪元素的字符串表示形式。
|
public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)
declaringClass - 包含由堆栈跟踪元素表示的执行点的类的完全限定名称
methodName - 包含由堆栈跟踪元素表示的执行点的方法的名称
fileName -包含由堆栈跟踪元素表示的执行点,或该文件的名称
null如果该信息不可用
lineNumber - 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。
值-2表示包含执行点的方法是本地方法
NullPointerException - 如果
declaringClass或
methodName为空
public String getFileName()
class文件的SourceFile属性( 根据Java虚拟机规范 4.7.7节)。
在某些系统中,名称可能指的是文件之外的一些源代码单元,例如源存储库中的条目。
null如果该信息不可用。
public int getLineNumber()
class文件的LineNumberTable属性( 根据Java虚拟机规范 ,第4.7.8节) 得出的 。
public String getClassName()
类包含由该堆栈跟踪元素所表示的执行点。
public String getMethodName()
<init>或<clinit> ,如“Java虚拟机规范”第3.9节所述 。
public boolean isNativeMethod()
true如果包含由该堆栈跟踪元素表示的执行点的方法是本地方法。
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)" - 如上所述,但是文件名和行号都不可用,并且包含执行点的方法已知为本机方法。 toString在
Object
Throwable.printStackTrace()
public boolean equals(Object obj)
StackTraceElement与该实例相同的执行点的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 。
equals在
Object
obj - 要与此堆栈跟踪元素进行比较的对象。
StackTraceElement与此实例相同的执行点的
StackTraceElement实例,则为true。
Object.hashCode() , HashMap
public int hashCode()
hashCode在
Object
Object.equals(java.lang.Object),
System.identityHashCode(java.lang.Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.