模块 jdk.jdi

接口 Method

所有父级接口:
Accessible , Comparable<Method> , Locatable , Mirror , TypeComponent

public interface Method extends TypeComponent , Locatable , Comparable <Method >
目标 VM 中的静态或实例方法。有关 Field 和 Method 镜像的一般信息,请参阅 TypeComponent
自从:
1.3
参见:
  • 方法详情

    • returnTypeName

      String  returnTypeName()
      返回返回类型的文本表示形式,如该方法的声明中所指定。

      即使尚未创建或加载该类型,此类型名称也始终可用。

      返回:
      包含返回类型名称的 String
    • returnType

      Type  returnType() throws ClassNotLoadedException
      返回在此方法的声明中指定的返回类型。

      注意:如果此方法的返回类型是引用类型(类、接口或数组),并且尚未由声明类型的类加载器创建或加载 - 即 declaringType() .classLoader() ,则将抛出 ClassNotLoadedException。此外,引用类型可能已加载但尚未准备好,在这种情况下将返回该类型,但尝试对返回的类型执行某些操作(例如 fields() )将抛出 ClassNotPreparedException 。使用 ReferenceType.isPrepared() 确定是否准备了引用类型。

      返回:
      此方法的返回值 Type
      抛出:
      ClassNotLoadedException - 如果尚未通过适当的类加载器创建或加载该类型。
      参见:
    • argumentTypeNames

      List <String > argumentTypeNames()
      返回一个列表,其中包含此方法的每个形参类型的文本表示形式。

      即使尚未创建或加载类型,此list也始终可用。

      返回:
      String List ,此方法的每个参数都有一个 List 元素。每个元素代表编译时指定的形式参数的类型。如果形式参数是用省略号声明的,那么它被表示为省略号之前的类型的数组。
    • argumentTypes

      List <Type > argumentTypes() throws ClassNotLoadedException
      返回一个列表,其中包含此方法的每个形式参数的类型。

      注意:如果有任何参数的类型是引用类型(类、接口或数组)并且尚未由声明类型的类加载器创建或加载 - 即 declaringType() .classLoader() ,则将抛出 ClassNotLoadedException。此外,引用类型可能已加载但尚未准备好,在这种情况下将返回列表,但尝试对该类型执行某些操作(例如 fields() )将抛出 ClassNotPreparedException 。使用 ReferenceType.isPrepared() 确定是否准备了引用类型。

      返回:
      返回 Type List ,此方法的每个参数都有一个 List 元素。每个元素代表编译时指定的形式参数的类型。如果形式参数是用省略号声明的,那么它被表示为省略号之前的类型的数组。
      抛出:
      ClassNotLoadedException - 如果类型尚未通过适当的类加载器加载。
      参见:
    • isAbstract

      boolean isAbstract()
      确定此方法是否是抽象的。
      返回:
      true 如果方法被声明为抽象的; false否则。
    • isDefault

      default boolean isDefault()
      确定此方法是否为默认方法
      返回:
      true 如果该方法被声明为默认; false否则。
      自从:
      1.8
    • isSynchronized

      boolean isSynchronized()
      确定此方法是否已同步。
      返回:
      true 如果方法被声明为同步; false否则。
    • isNative

      boolean isNative()
      确定此方法是否为本机方法。
      返回:
      true 如果该方法声明为本机; false否则。
    • isVarArgs

      boolean isVarArgs()
      确定此方法是否接受可变数量的参数。
      返回:
      true 如果该方法接受可变数量的参数,false 否则。
      自从:
      1.5
    • isBridge

      boolean isBridge()
      确定此方法是否为桥接方法。桥接方法定义在Java 语言规范.
      返回:
      true 如果该方法是桥接方法,false 否则。
      自从:
      1.5
    • isConstructor

      boolean isConstructor()
      确定此方法是否为构造方法。
      返回:
      true 如果该方法是构造函数; false否则。
    • isStaticInitializer

      boolean isStaticInitializer()
      确定此方法是否为静态初始值设定项。
      返回:
      true 如果该方法是静态初始化程序; false否则。
    • isObsolete

      boolean isObsolete()
      确定此方法是否已过时。
      返回:
      true 如果此方法已被 VirtualMachine.redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>) 操作废弃。
      自从:
      1.4
    • allLineLocations

      List <Location > allLineLocations() throws AbsentInformationException
      返回一个列表,其中包含此方法中每个可执行源代码行的 Location 对象。

      此方法等效于 allLineLocations(vm.getDefaultStratum(),null) - 有关详细信息,请参阅 allLineLocations(String,String)

      返回:
      所有源代码行 Location 对象的列表。
      抛出:
      AbsentInformationException - 如果此(非本机、非抽象)方法没有行号信息。
    • allLineLocations

      List <Location > allLineLocations(String  stratum, String  sourceName) throws AbsentInformationException
      返回一个列表,其中包含此方法中每个可执行源代码行的 Location 对象。

      每个位置将源代码行映射到一系列代码索引。范围的开始可以通过 Location.codeIndex() 确定。返回的列表按代码索引(从低到高)排序。

      如果编译器和/或 VM 将该行映射到两个或多个不相交的代码索引范围,则返回的列表可能包含特定行号的多个位置。

      如果该方法是原生的或抽象的,则返回一个空列表。

      返回的列表是针对指定的地层(有关地层的描述,请参阅 Location )。

      参数:
      stratum - 从 ReferenceType.defaultStratum() 检索信息的层或 null
      sourceName - 仅返回此源文件中的位置或 null 返回位置。
      返回:
      所有源代码行 Location 对象的列表。
      抛出:
      AbsentInformationException - 如果此(非本机、非抽象)方法没有行号信息。或者如果来源名称是非 null 并且源名称信息不存在。
      自从:
      1.4
    • locationsOfLine

      List <Location > locationsOfLine(int lineNumber) throws AbsentInformationException
      返回一个列表,其中包含映射到给定行号的所有 Location 对象。

      此方法等效于 locationsOfLine(vm.getDefaultStratum(), null, lineNumber) - 有关详细信息,请参阅 locationsOfLine(java.lang.String,java.lang.String,int)

      参数:
      lineNumber - 行号
      返回:
      映射到给定行号的 Location 对象列表。
      抛出:
      AbsentInformationException - 如果此方法没有行号信息。
    • locationsOfLine

      List <Location > locationsOfLine(String  stratum, String  sourceName, int lineNumber) throws AbsentInformationException
      返回一个列表,其中包含映射到给定行号和源名称的所有 Location 对象。

      返回一个列表,其中包含映射到给定行的每个 Location 。返回的列表将包含每个不相交的代码索引范围的位置,这些代码索引已由编译器和/或 VM 分配给给定行。每个返回的位置对应于这个范围的开始。如果指定行号处没有可执行代码,则返回一个空列表;具体来说,本机和抽象方法将始终返回一个空列表。

      返回的列表是针对指定的地层(有关地层的描述,请参阅 Location )。

      参数:
      stratum - 用于比较行号和源名称的层,或 null 以使用默认层
      sourceName - 包含行号的源名称,或者为 null 以匹配所有源名称
      lineNumber - 行号
      返回:
      映射到给定行号的 Location 对象列表。
      抛出:
      AbsentInformationException - 如果此方法没有行号信息。或者如果来源名称是非 null 并且源名称信息不存在。
      自从:
      1.4
    • locationOfCodeIndex

      Location  locationOfCodeIndex(long codeIndex)
      返回给定代码索引的 Location
      返回:
      对应于给定代码索引的 Location 或 null 如果指定代码索引不是此方法的有效代码索引(本机和抽象方法将始终返回 null)。
    • variables

      返回包含此方法中声明的每个 LocalVariable 的列表。该列表包括在方法内的任何范围内声明的任何变量。它可能包含在不相交范围内声明的多个同名变量。参数被认为是局部变量,将出现在返回的列表中。如果局部变量信息不可用,可以使用StackFrame.getArgumentValues() 方法获取方法调用的实参值
      返回:
      LocalVariable 对象的列表,它们镜像目标 VM 中此方法中声明的局部变量。如果没有局部变量,则返回一个零长度列表。
      抛出:
      AbsentInformationException - 如果此方法没有变量信息。通常,局部变量信息对于本地或抽象方法是不可用的(即它们的参数名称信息是不可用的),因此它们将抛出此异常。
    • variablesByName

      List <LocalVariable > variablesByName(String  name) throws AbsentInformationException
      返回一个列表,其中包含此方法中给定名称的每个 LocalVariable 。如果在方法内的不相交范围内使用相同的变量名称,则可以返回多个变量。
      返回:
      给定名称的 LocalVariable 对象列表。如果没有匹配的局部变量,则返回零长度列表。
      抛出:
      AbsentInformationException - 如果此方法没有变量信息。通常,局部变量信息对于本地或抽象方法是不可用的(即它们的参数名称信息是不可用的),因此它们将抛出此异常。
    • arguments

      返回一个列表,其中包含声明为此方法的参数的每个 LocalVariable 。如果局部变量信息不可用,可以使用StackFrame.getArgumentValues() 方法获取方法调用的实参值
      返回:
      LocalVariable 参数列表。如果没有参数,则返回零长度列表。
      抛出:
      AbsentInformationException - 如果此方法没有变量信息。通常,局部变量信息对于本地或抽象方法是不可用的(即它们的参数名称信息是不可用的),因此它们将抛出此异常。
    • bytecodes

      byte[] bytecodes()
      返回包含此方法的字节码的数组。

      并非所有目标虚拟机都支持此操作。使用 VirtualMachine.canGetBytecodes() 确定是否支持该操作。

      返回:
      字节码数组;抽象和本机方法将返回一个零长度数组。
      抛出:
      UnsupportedOperationException - 如果目标虚拟机不支持字节码的检索。
    • location

      Location  location()
      如果有可执行代码与之关联,则返回此方法的 Location
      指定者:
      location 在接口 Locatable
      返回:
      此镜像的 Location ,如果这是一个抽象方法,则为 null;本机方法将返回一个 Location 对象,其 codeIndex 为 -1。
    • equals

      boolean equals(Object  obj)
      比较指定的 Object 与此方法是否相等。
      重写:
      equals 在类 Object
      参数:
      obj - 要比较的参考对象。
      返回:
      如果 Object 是一个方法并且两者都镜像相同的方法(在相同的类或接口中,在相同的 VM 中声明),则为 true。
      参见:
    • hashCode

      int hashCode()
      返回此方法的哈希码值。
      重写:
      hashCode 在类 Object
      返回:
      整数哈希码。
      参见: