java.lang.Object
java.lang.StackTraceElement
- 所有已实现的接口:
-
Serializable
堆栈跟踪中的一个元素,由
Throwable.getStackTrace()
返回。每个元素代表一个单独的堆栈帧。除了堆栈顶部的帧之外的所有堆栈帧都代表一个方法调用。堆栈顶部的帧代表生成堆栈跟踪的执行点。通常,这是生成与堆栈跟踪对应的throwable的点。
- 自版本:
- 1.4
- 参见:
-
Constructor Summary
ConstructorDescriptionStackTraceElement
(String declaringClass, String methodName, String fileName, int lineNumber) 创建表示指定执行点的堆栈跟踪元素。StackTraceElement
(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber) 创建表示指定执行点的堆栈跟踪元素。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
如果指定的对象是另一个表示与此实例相同执行点的StackTraceElement
实例,则返回true。返回包含由此堆栈跟踪元素表示的执行点的类加载器的名称。返回包含由此堆栈跟踪元素表示的执行点的类的完全限定名称。返回包含由此堆栈跟踪元素表示的执行点的源文件的名称。int
返回包含由此堆栈跟踪元素表示的执行点的源行的行号。返回包含由此堆栈跟踪元素表示的执行点的方法的名称。返回包含由此堆栈跟踪元素表示的执行点的模块的名称。返回包含由此堆栈跟踪元素表示的执行点的模块的版本。int
hashCode()
返回此堆栈跟踪元素的哈希码值。boolean
如果包含由此堆栈跟踪元素表示的执行点的方法是本地方法,则返回true。toString()
返回此堆栈跟踪元素的字符串表示形式。
-
Constructor Details
-
StackTraceElement
- 参数:
-
declaringClass
- 包含由堆栈跟踪元素表示的执行点的类的完全限定名称 -
methodName
- 包含由堆栈跟踪元素表示的执行点的方法的名称 -
fileName
- 包含由堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为null
-
lineNumber
- 包含由此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值为-2表示包含执行点的方法是本地方法 - 抛出:
-
NullPointerException
- 如果declaringClass
或methodName
为null - 自版本:
- 1.5
-
StackTraceElement
public StackTraceElement(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber) 创建表示指定执行点的堆栈跟踪元素。- 参数:
-
classLoaderName
- 如果包含由堆栈跟踪元素表示的执行点的类的类加载器具有名称,则为类加载器名称;否则为null
-
moduleName
- 如果包含由堆栈跟踪元素表示的执行点的类所在的模块具有名称,则为模块名称;否则为null
-
moduleVersion
- 如果包含由堆栈跟踪元素表示的执行点的类所在的具有版本的命名模块,则为模块版本;否则为null
-
declaringClass
- 包含由堆栈跟踪元素表示的执行点的类的完全限定名称 -
methodName
- 包含由堆栈跟踪元素表示的执行点的方法的名称 -
fileName
- 包含由堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为null
-
lineNumber
- 包含由此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值为-2表示包含执行点的方法是本地方法 - 抛出:
-
NullPointerException
- 如果declaringClass
为null
或methodName
为null
- 自版本:
- 9
-
-
Method Details
-
getFileName
返回包含由此堆栈跟踪元素表示的执行点的源文件的名称。通常,这对应于相关class
文件的SourceFile
属性(根据Java虚拟机规范第4.7.7节)。在某些系统中,该名称可能指的是除文件之外的某个源代码单元,例如源代码库中的条目。- 返回:
-
包含由此堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为
null
。
-
getLineNumber
public int getLineNumber()- 返回:
- 包含由此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。
-
getModuleName
返回包含由此堆栈跟踪元素表示的执行点的模块的名称。- 返回:
-
包含由此堆栈跟踪元素表示的执行点的
Module
的模块名称;如果模块名称不可用,则为null
。 - 自版本:
- 9
- 参见:
-
getModuleVersion
返回包含由此堆栈跟踪元素表示的执行点的模块的模块版本。- 返回:
-
包含由此堆栈跟踪元素表示的执行点的
Module
的模块版本;如果模块版本不可用,则为null
。 - 自版本:
- 9
- 参见:
-
getClassLoaderName
返回包含由此堆栈跟踪元素表示的执行点的类的类加载器的名称。- 返回:
-
包含由此堆栈跟踪元素表示的执行点的类的类加载器的名称;如果类加载器未命名,则为
null
。 - 自版本:
- 9
- 参见:
-
getClassName
返回包含由此堆栈跟踪元素表示的执行点的类的完全限定名称。- 返回:
-
包含由此堆栈跟踪元素表示的执行点的
Class
的完全限定名称。
-
getMethodName
- 返回:
- 返回包含由此堆栈跟踪元素表示的执行点的方法的名称。
-
isNativeMethod
public boolean isNativeMethod()如果包含由此堆栈跟踪元素表示的执行点的方法是本地方法,则返回true。- 返回:
-
如果包含由此堆栈跟踪元素表示的执行点的方法是本地方法,则返回
true
。
-
toString
返回此堆栈跟踪元素的字符串表示形式。- 覆盖:
-
toString
在类Object
中 - API注释:
-
此字符串的格式取决于实现,但以下示例可视为典型:
- "
com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)
" - 请参阅下面的描述。 - "
com.foo.loader/foo@9.0/com.foo.Main.run(Main.java)
" - 行号不可用。 - "
com.foo.loader/foo@9.0/com.foo.Main.run(Unknown Source)
" - 既没有文件名也没有行号可用。 - "
com.foo.loader/foo@9.0/com.foo.Main.run(Native Method)
" - 包含执行点的方法是本地方法。 - "
com.foo.loader//com.foo.bar.App.run(App.java:12)
" - 执行点的类在名为com.foo.loader
的类加载器的未命名模块中定义。 - "
acme@2.1/org.acme.Lib.test(Lib.java:80)
" - 执行点的类在由内置类加载器加载的acme
模块中定义,例如应用程序类加载器。 - "
MyClass.mash(MyClass.java:9)
" -MyClass
类在应用程序类路径上。
第一个示例显示了由三个元素组成的堆栈跟踪元素,每个元素由
"/"
分隔,后跟包含执行点的源行的源文件名和行号。第一个元素"com.foo.loader
"是类加载器的名称。第二个元素"foo@9.0
"是模块名称和版本。第三个元素是包含执行点的方法;"com.foo.Main
"是完全限定的类名,"run
"是方法的名称。"Main.java
"是源文件名,"101
"是行号。如果类在一个未命名模块中定义,则如"
com.foo.loader//com.foo.bar.App.run(App.java:12)
"所示,第二个元素将被省略。如果类加载器是一个内置类加载器或者没有名称,则第一个元素及其后的
"/"
将被省略,如"acme@2.1/org.acme.Lib.test(Lib.java:80)
"所示。如果省略第一个元素且模块是未命名模块,则也将省略第二个元素及其后的"/"
,如"MyClass.mash(MyClass.java:9)
"所示。toString
方法可能会在两个StackTraceElement
实例上返回两个不同的值,这两个实例通过构造函数创建,一个通过Throwable
或StackWalker.StackFrame
获取,其中实现可能选择在返回的字符串中省略一些元素。 - "
- 返回:
- 对象的字符串表示形式。
- 参见:
-
equals
如果指定的对象是另一个表示与此实例相同执行点的StackTraceElement
实例,则返回true。两个堆栈跟踪元素a
和b
仅在以下情况下相等:
其中equals(a.getClassLoaderName(), b.getClassLoaderName()) && equals(a.getModuleName(), b.getModuleName()) && equals(a.getModuleVersion(), b.getModuleVersion()) && equals(a.getClassName(), b.getClassName()) && equals(a.getMethodName(), b.getMethodName()) equals(a.getFileName(), b.getFileName()) && a.getLineNumber() == b.getLineNumber()
equals
具有Objects.equals
的语义。 -
hashCode
public int hashCode()返回此堆栈跟踪元素的哈希码值。
-