java.lang.Object
java.lang.StackTraceElement
- 所有已实现的接口:
Serializable
堆栈跟踪中的一个元素,由
Throwable.getStackTrace() 返回。每个元素代表一个堆栈帧。除了堆栈顶部的堆栈帧外,所有堆栈帧都表示一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。通常,这是创建对应于堆栈跟踪的 throwable 的点。
- 自从:
- 1.4
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述boolean如果指定的对象是代表与此实例相同的执行点的另一个StackTraceElement实例,则返回 true。返回包含此堆栈跟踪元素表示的执行点的类的类加载器的名称。返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。返回包含此堆栈跟踪元素表示的执行点的源文件的名称。int返回包含此堆栈跟踪元素表示的执行点的源代码行的行号。返回包含此堆栈跟踪元素表示的执行点的方法的名称。返回包含此堆栈跟踪元素表示的执行点的模块的模块名称。返回包含此堆栈跟踪元素表示的执行点的模块的模块版本。inthashCode()返回此堆栈跟踪元素的哈希码值。boolean如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。toString()返回此堆栈跟踪元素的字符串表示形式。
-
构造方法详细信息
-
StackTraceElement
- 参数:
declaringClass- 包含堆栈跟踪元素表示的执行点的类的完全限定名称methodName- 包含堆栈跟踪元素表示的执行点的方法的名称fileName- 包含由堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为nulllineNumber- 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值为 -2 表示包含执行点的方法是本地方法- 抛出:
NullPointerException- 如果declaringClass或methodName为空- 自从:
- 1.5
-
StackTraceElement
public StackTraceElement(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber) 创建表示指定执行点的堆栈跟踪元素。- 参数:
classLoaderName- 类加载器名称,如果包含由堆栈跟踪表示的执行点的类的类加载器已命名;否则nullmoduleName- 如果包含堆栈跟踪表示的执行点的类在命名模块中,则为模块名称;否则nullmoduleVersion- 如果包含由堆栈跟踪表示的执行点的类位于具有版本的命名模块中,则为模块版本;否则nulldeclaringClass- 包含堆栈跟踪元素表示的执行点的类的完全限定名称methodName- 包含堆栈跟踪元素表示的执行点的方法的名称fileName- 包含由堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为nulllineNumber- 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值为 -2 表示包含执行点的方法是本地方法- 抛出:
NullPointerException- 如果declaringClass是null或methodName是null- 自从:
- 9
-
-
方法详情
-
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”是行号。如果在 unnamed module 中定义了一个类,则第二个元素将被省略,如“
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实例上返回两个不同的值,这两个实例是 equal ,例如一个通过构造函数创建,一个从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()返回此堆栈跟踪元素的哈希码值。
-