- java.lang.Object
-
- java.lang.StackTraceElement
-
- All Implemented Interfaces:
-
Serializable
public final class StackTraceElement extends Object implements Serializable
堆栈跟踪中的一个元素,由Throwable.getStackTrace()返回。 每个元素表示单个堆栈帧。 堆栈顶部除堆栈之外的所有堆栈都表示方法调用。 堆栈顶部的帧表示生成堆栈跟踪的执行点。 通常,这是创建与堆栈跟踪相对应的throwable的点。- 从以下版本开始:
- 1.4
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)创建表示指定执行点的堆栈跟踪元素。StackTraceElement(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber)创建表示指定执行点的堆栈跟踪元素。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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()
返回包含由该堆栈跟踪元素表示的执行点的模块的模块名称。- 结果
-
包含由该堆栈跟踪元素表示的执行点的
Module的模块名称;null如果模块名称不可用。 - 从以下版本开始:
- 9
- 另请参见:
-
Module.getName()
-
getModuleVersion
public String getModuleVersion()
返回包含由该堆栈跟踪元素表示的执行点的模块的模块版本。- 结果
-
Module的模块版本包含由该堆栈跟踪元素表示的执行点;null如果模块版本不可用。 - 从以下版本开始:
- 9
- 另请参见:
-
ModuleDescriptor.Version
-
getClassLoaderName
public String getClassLoaderName()
返回包含由此堆栈跟踪元素表示的执行点的类的类加载器的名称。- 结果
-
包含由该堆栈跟踪元素表示的执行点的类的类加载器的名称;
如果类加载器未命名,
null。 - 从以下版本开始:
- 9
- 另请参见:
-
ClassLoader.getName()
-
getClassName
public String getClassName()
返回包含由该堆栈跟踪元素表示的执行点的类的完全限定名称。- 结果
-
包含由此堆栈跟踪元素表示的执行点的
Class的完全限定名称。
-
getMethodName
public String getMethodName()
返回包含由该堆栈跟踪元素表示的执行点的方法的名称。 如果执行点包含在实例或类初始化程序中,则该方法将返回相应的特殊方法名称<init>或<clinit>,如“Java虚拟机规范”第3.9节所述。- 结果
- 包含由该堆栈跟踪元素表示的执行点的方法的名称。
-
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模块中,由一个内置的类加载器(如应用程序类加载器)加载。 - “
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实例,则为true。 - 另请参见:
-
Object.hashCode(),HashMap
-
hashCode
public int hashCode()
返回此堆栈跟踪元素的哈希码值。- 重写:
-
hashCode在类Object - 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
-