模块 java.base
 java.lang

类 StackTraceElement

java.lang.Object
java.lang.StackTraceElement
所有已实现的接口:
Serializable

public final class StackTraceElement extends Object implements Serializable
堆栈跟踪中的一个元素,由 Throwable.getStackTrace() 返回。每个元素代表一个堆栈帧。除了堆栈顶部的堆栈帧外,所有堆栈帧都表示一个方法调用。堆栈顶部的帧表示生成堆栈跟踪的执行点。通常,这是创建对应于堆栈跟踪的 throwable 的点。
自从:
1.4
参见:
  • 构造方法总结

    构造方法
    构造方法
    描述
    StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber)
    创建表示指定执行点的堆栈跟踪元素。
    StackTraceElement(String classLoaderName, String moduleName, String moduleVersion, String declaringClass, String methodName, String fileName, int lineNumber)
    创建表示指定执行点的堆栈跟踪元素。
  • 方法总结

    修饰符和类型
    方法
    描述
    boolean
    equals(Object obj)
    如果指定的对象是代表与此实例相同的执行点的另一个 StackTraceElement 实例,则返回 true。
    返回包含此堆栈跟踪元素表示的执行点的类的类加载器的名称。
    返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。
    返回包含此堆栈跟踪元素表示的执行点的源文件的名称。
    int
    返回包含此堆栈跟踪元素表示的执行点的源代码行的行号。
    返回包含此堆栈跟踪元素表示的执行点的方法的名称。
    返回包含此堆栈跟踪元素表示的执行点的模块的模块名称。
    返回包含此堆栈跟踪元素表示的执行点的模块的模块版本。
    int
    返回此堆栈跟踪元素的哈希码值。
    boolean
    如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。
    返回此堆栈跟踪元素的字符串表示形式。

    在类 java.lang.Object 中声明的方法

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • 构造方法详细信息

    • StackTraceElement

      public StackTraceElement(String  declaringClass, String  methodName, String  fileName, int lineNumber)
      创建表示指定执行点的堆栈跟踪元素。堆栈跟踪元素的 module name module version 将为 null
      参数:
      declaringClass - 包含堆栈跟踪元素表示的执行点的类的完全限定名称
      methodName - 包含堆栈跟踪元素表示的执行点的方法的名称
      fileName - 包含由堆栈跟踪元素表示的执行点的文件的名称,如果此信息不可用,则为 null
      lineNumber - 包含此堆栈跟踪元素表示的执行点的源行的行号,如果此信息不可用,则为负数。值为 -2 表示包含执行点的方法是本地方法
      抛出:
      NullPointerException - 如果 declaringClassmethodName 为空
      自从:
      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 - 如果 declaringClassnullmethodNamenull
      自从:
      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
      参见:
    • getModuleVersion

      public String  getModuleVersion()
      返回包含此堆栈跟踪元素表示的执行点的模块的模块版本。
      返回:
      包含此堆栈跟踪元素表示的执行点的 Module 的模块版本; null 如果模块版本不可用。
      自从:
      9
      参见:
    • getClassLoaderName

      public String  getClassLoaderName()
      返回包含此堆栈跟踪元素表示的执行点的类的类加载器的名称。
      返回:
      包含此堆栈跟踪元素表示的执行点的类的类加载器的名称; null 如果类加载器未命名。
      自从:
      9
      参见:
    • getClassName

      public String  getClassName()
      返回包含此堆栈跟踪元素表示的执行点的类的完全限定名称。
      返回:
      包含此堆栈跟踪元素表示的执行点的 Class 的完全限定名称。
    • getMethodName

      public String  getMethodName()
      返回包含此堆栈跟踪元素表示的执行点的方法的名称。如果执行点包含在实例或类初始值设定项中,则此方法将返回适当的特殊方法名<init><clinit> ,根据第 3.9Java 虚拟机规范.
      返回:
      包含此堆栈跟踪元素表示的执行点的方法的名称。
    • isNativeMethod

      public boolean isNativeMethod()
      如果包含此堆栈跟踪元素表示的执行点的方法是本机方法,则返回 true。
      返回:
      true 如果包含此堆栈跟踪元素表示的执行点的方法是本机方法。
    • toString

      public String  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

      public boolean equals(Object  obj)
      如果指定的对象是代表与此实例相同的执行点的另一个 StackTraceElement 实例,则返回 true。两个堆栈跟踪元素 ab 相等当且仅当:
      
         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 实例,则为真。
      参见:
    • hashCode

      public int hashCode()
      返回此堆栈跟踪元素的哈希码值。
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见: