- java.lang.Object
-
- java.lang.StackTraceElement
-
- 实现的所有接口
-
Serializable
public final class StackTraceElement extends Object implements Serializable
堆栈跟踪中的元素,由Throwable.getStackTrace()返回。 每个元素代表一个堆栈帧。 除堆栈顶部的堆栈帧之外的所有堆栈帧表示方法调用。 堆栈顶部的框架表示生成堆栈跟踪的执行点。 通常,这是创建与堆栈跟踪相对应的throwable的点。- 从以下版本开始:
- 1.4
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)创建表示指定执行点的堆栈跟踪元素。StackTraceElement(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber)创建表示指定执行点的堆栈跟踪元素。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 booleanequals(Object obj)如果指定的对象是另一个表示与此实例相同的执行点的StackTraceElement实例,则返回true。StringgetClassLoaderName()返回包含此堆栈跟踪元素表示的执行点的类的类加载器的名称。StringgetClassName()返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。StringgetFileName()返回包含此堆栈跟踪元素表示的执行点的源文件的名称。intgetLineNumber()返回包含此堆栈跟踪元素表示的执行点的源代码行号。StringgetMethodName()返回包含此堆栈跟踪元素表示的执行点的方法的名称。StringgetModuleName()返回包含此堆栈跟踪元素表示的执行点的模块的模块名称。StringgetModuleVersion()返回包含此堆栈跟踪元素表示的执行点的模块的模块版本。inthashCode()返回此堆栈跟踪元素的哈希码值。booleanisNativeMethod()如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回true。StringtoString()返回此堆栈跟踪元素的字符串表示形式。
-
-
-
构造方法详细信息
-
StackTraceElement
public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)
创建表示指定执行点的堆栈跟踪元素。 堆栈跟踪元素的module name和module version将是null。- 参数
-
declaringClass- 包含堆栈跟踪元素表示的执行点的类的标准名称 -
methodName- 包含堆栈跟踪元素表示的执行点的方法的名称 -
fileName- 包含堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,null -
lineNumber- 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。 值-2表示包含执行点的方法是本机方法 - 异常
-
NullPointerException- 如果declaringClass或methodName为空 - 从以下版本开始:
- 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
-
-
方法详细信息
-
getFileName
public String getFileName()
返回包含此堆栈跟踪元素表示的执行点的源文件的名称。 通常,这对应于相关class文件的SourceFile属性( 根据Java虚拟机规范 ,第4.7.7节)。 在某些系统中,名称可以指代除文件之外的某些源代码单元,例如源存储库中的条目。- 结果
-
包含此堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,
null。
-
getLineNumber
public int getLineNumber()
返回包含此堆栈跟踪元素表示的执行点的源代码行号。 通常,这是从相关class文件的LineNumberTable属性派生的( 根据Java虚拟机规范 ,第4.7.8节)。- 结果
- 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。
-
getModuleName
public String getModuleName()
返回包含此堆栈跟踪元素表示的执行点的模块的模块名称。- 结果
-
包含此堆栈跟踪元素表示的执行点的
模块的模块名称;null如果模块名称不可用。 - 从以下版本开始:
- 9
- 另请参见:
-
Module.getName()
-
getModuleVersion
public String getModuleVersion()
返回包含此堆栈跟踪元素表示的执行点的模块的模块版本。- 结果
-
模块的模块版本,包含由此堆栈跟踪元素表示的执行点;null如果模块版本不可用。 - 从以下版本开始:
- 9
- 另请参见:
-
ModuleDescriptor.Version
-
getClassLoaderName
public String getClassLoaderName()
返回包含此堆栈跟踪元素表示的执行点的类的类加载器的名称。- 结果
-
包含此堆栈跟踪元素表示的执行点的类的类加载器的名称;
null如果没有命名类加载器。 - 从以下版本开始:
- 9
- 另请参见:
-
ClassLoader.getName()
-
getClassName
public String getClassName()
返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。- 结果
-
包含此堆栈跟踪元素表示的执行点的
类标准名称。
-
getMethodName
public String getMethodName()
返回包含此堆栈跟踪元素表示的执行点的方法的名称。 如果执行点包含在实例或类初始值设定项中,则此方法将根据Java虚拟机规范的第3.9节返回相应的特殊方法名称<init>或<clinit>。- 结果
- 包含此堆栈跟踪元素表示的执行点的方法的名称。
-
isNativeMethod
public boolean isNativeMethod()
如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回true。- 结果
-
true如果包含此堆栈跟踪元素表示的执行点的方法是本机方法。
-
toString
public String toString()
返回此堆栈跟踪元素的字符串表示形式。- 重写:
-
toString在类Object - API Note:
-
此字符串的格式取决于实现,但以下示例可能被视为典型:
- “
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模块中定义,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)”中所示。如果类加载器是built-in class loader或未命名,则省略第一个元素及其后续的
"/",如“acme@2.1/org.acme.Lib.test(Lib.java:80)”中所示。 如果省略第一个元素并且模块是未命名的模块,则也省略第二个元素及其后面的"/",如“MyClass.mash(MyClass.java:9)”中所示。toString方法可以在两个StackTraceElement实例( equal)上返回两个不同的值,例如通过构造函数创建的一个,以及从Throwable或StackWalker.StackFrame获得的一个,其中实现可以选择省略返回的字符串中的某个元素。 - “
- 结果
- 对象的字符串表示形式。
- 另请参见:
-
Throwable.printStackTrace()
-
equals
public boolean equals(Object obj)
如果指定的对象是另一个表示与此实例相同的执行点的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。- 重写:
-
equals在类Object - 参数
-
obj- 要与此堆栈跟踪元素进行比较的对象。 - 结果
-
如果指定的对象是另一个表示与此实例相同的执行点的
StackTraceElement实例,则StackTraceElementtrue。 - 另请参见:
-
Object.hashCode(),HashMap
-
hashCode
public int hashCode()
返回此堆栈跟踪元素的哈希码值。- 重写:
-
hashCode在类Object - 结果
- 此对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
-