Module jdk.jdi
Package com.sun.jdi

Interface Method

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

public interface Method extends TypeComponent, Locatable, Comparable<Method>
目标虚拟机中的静态或实例方法。有关字段和方法镜像的一般信息,请参阅TypeComponent
自版本:
1.3
另请参阅:
  • Method Details

    • returnTypeName

      String returnTypeName()
      返回在此方法声明中指定的返回类型的文本表示。

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

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

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

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

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

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

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

      返回:
      返回此方法每个参数的一个列表,每个参数的元素表示在编译时指定的形式参数的类型。如果形式参数声明为省略号,则将其表示为省略号之前的类型的数组。
    • argumentTypes

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

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

      返回:
      返回此方法每个参数的类型的列表,每个参数的元素表示在编译时指定的形式参数的类型。如果形式参数声明为省略号,则将其表示为省略号之前的类型的数组。
      抛出:
      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()
      确定此方法是否已过时。
      返回:
      如果此方法已被VirtualMachine.redefineClasses(java.util.Map<? extends com.sun.jdi.ReferenceType, byte[]>)操作所废弃,则返回true
      自版本:
      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将该行映射到两个或更多不相交的代码索引范围,则返回的列表可能包含特定行号的多个位置。

      如果方法是本地的或抽象的,则返回一个空列表。

      返回的列表是针对指定的stratum(请参阅Location以获取strata的描述)。

      参数:
      stratum - 要检索信息的stratum,或null以使用ReferenceType.defaultStratum()
      sourceName - 仅返回此源文件中的位置,或null以返回位置。
      返回:
      返回所有源代码行Location对象的列表。
      抛出:
      AbsentInformationException - 如果此(非本地的,非抽象的)方法没有行号信息。或者如果sourceName不是null,并且不存在源名称信息。
      自1.4版本起:
      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已分配给给定行的每个不相交代码索引范围的位置。每个返回的位置对应于此范围的开始。如果指定行号处没有可执行代码,则将返回一个空列表;具体而言,本地和抽象方法将始终返回一个空列表。

      返回的列表是针对指定的stratum(请参阅Location以获取strata的描述)。

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

      Location locationOfCodeIndex(long codeIndex)
      返回给定代码索引的Location
      返回:
      返回与给定代码索引对应的Location,如果指定的代码索引对于此方法无效,则返回null(本地和抽象方法将始终返回null)。
    • variables

      返回一个列表,其中包含在此方法中声明的每个LocalVariable。列表包括在方法内的任何范围内声明的任何变量。它可能包含在不同范围内声明的相同名称的多个变量。参数被视为局部变量,并将出现在返回的列表中。如果局部变量信息不可用,则可以通过使用方法StackFrame.getArgumentValues()获取方法调用的实际参数值
      返回:
      反映目标VM中此方法中声明的局部变量的LocalVariable对象列表。如果没有局部变量,则返回一个长度为零的列表。
      抛出:
      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;本地方法将返回一个codeIndex为-1的Location对象。
    • equals

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

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