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.