- 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/[email protected]/com.foo.Main.run(Main.java:101)” - 请参阅以下说明。 -  “ 
com.foo.loader/[email protected]/com.foo.Main.run(Main.java)” - 行号不可用。 -  “ 
com.foo.loader/[email protected]/com.foo.Main.run(Unknown Source)” - 文件名和行号均不可用。 -  “ 
com.foo.loader/[email protected]/com.foo.Main.run(Native Method)” - 包含执行点的方法是本机方法。 -  “ 
com.foo.loader//com.foo.bar.App.run(App.java:12)” - 执行点的类在名为com.foo.loader的类加载器的未命名模块中定义。 -  “ 
[email protected]/org.acme.Lib.test(Lib.java:80)” - 执行点的类在acme模块中定义,acme模块由内置的类加载器(如应用程序类加载器)加载。 -  “ 
MyClass.mash(MyClass.java:9)” -MyClass类位于应用程序类路径上。 
第一个示例显示了由三个元素组成的堆栈跟踪元素,每个元素由
"/"分隔,后跟源文件名和包含执行点的源代码行号。 第一个元素“com.foo.loader”是类加载器的名称。 第二个元素“[email protected]”是模块名称和版本。 第三个元素是包含执行点的方法; “com.foo.Main"”是完全限定的类名,“run”是方法的名称。 “Main.java”是源文件名,“101”是行号。如果在未命名的模块中定义了类,则省略第二个元素,如“
com.foo.loader//com.foo.bar.App.run(App.java:12)”中所示。如果类加载器是built-in class loader或未命名,则省略第一个元素及其后续的
"/",如“[email protected]/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) 
 
 -  
 
 -