Module  jdk.jdi
软件包  com.sun.jdi

Interface ReferenceType

    • 方法详细信息

      • name

        String name​()
        获取此类型的完全限定名称。 返回的名称格式可能会在此类型的对象的Java编程语句声明中显示。

        对于原始类,返回的名称是相应原语类型的名称; 例如,返回“int”作为由Integer.TYPE表示的类的名称。

        Specified by:
        name在接口 Type
        结果
        一个包含类型名称的字符串。
      • genericSignature

        String genericSignature​()
        获取此类型的通用签名(如果有)。 通用签名描述在The Java™ Virtual Machine Specification中
        结果
        一个包含通用签名的字符串,如果没有通用签名, null
        从以下版本开始:
        1.5
      • classLoader

        ClassLoaderReference classLoader​()
        获取加载与此类型相对应的类的类加载器对象。
        结果
        一个ClassLoaderReference镜像类加载器,如果类是通过引导类加载器加载的, null
      • module

        default ModuleReference module​()
        获取包含与此类型对应的类的模块对象。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canGetModuleInfo()来确定是否支持该操作。
        实现要求:
        默认实现会抛出 UnsupportedOperationException
        结果
        一个ModuleReference镜像目标VM中的模块。
        异常
        UnsupportedOperationException - 如果目标虚拟机不支持此操作。
        从以下版本开始:
        9
      • sourceName

        String sourceName​()
                   throws AbsentInformationException
        获取与此类型的声明相对应的源的识别名称。 该字符串的解释是源存储库机制的责任。

        返回的名称取决于虚拟机的默认层次( VirtualMachine.getDefaultStratum() )。 在参考实现中,当使用基础层时,返回的字符串是包含此类型声明的源文件的不合格名称。 在其他层中,返回的源名称是该层的第一个源名称。 由于其他语言的参考类型可能有多个源名称,因此优选使用Location.sourceName()sourceNames(String)

        对于数组( ArrayType )和原始类,总是抛出AbsentInformationException。

        结果
        字符串源文件名
        异常
        AbsentInformationException - 如果源名称不知道
      • sourceNames

        List<String> sourceNames​(String stratum)
                          throws AbsentInformationException
        获取与此类型的声明对应的所有源的识别名称。 这些名称的解释是源存储库机制的责任。

        返回的名称用于指定的层次(有关层的描述,请参阅Location )。 在参考实现中,当使用Java编程语言层次时,返回的List包含一个元素:一个字符串,它是包含此类型声明的源文件的不合格名称。 在其他层中,返回的源名称都是为该层定义的源名称。

        参数
        stratum - 为声明类型的默认层次检索信息的层或 null
        结果
        每个表示源名称的字符串对象的列表
        异常
        AbsentInformationException - 如果源名称不知道。

        对于数组( ArrayType )和原始类,总是抛出AbsentInformationException。

        从以下版本开始:
        1.4
      • sourcePaths

        List<String> sourcePaths​(String stratum)
                          throws AbsentInformationException
        获取与此类型的声明对应的源的路径。 这些路径的解释是源存储库机制的责任。

        返回的路径用于指定的层(有关层的描述,请参阅Location )。 在参考实现中,对于没有明确指定源路径(Java编程语言stratum永远不会)的层,返回的字符串是以此ReferenceType的包名称转换为平台相关路径的sourceNames(String) 例如,在Windows平台上, java.lang.Thread将返回一个包含一个元素的列表: "java\lang\Thread.java"

        参数
        stratum - 为声明类型的默认层次检索信息的层或 null
        结果
        每个表示源路径的字符串对象的列表
        异常
        AbsentInformationException - 如果源名称不知道。

        对于数组( ArrayType )和原始类,总是抛出AbsentInformationException。

        从以下版本开始:
        1.4
      • isStatic

        boolean isStatic​()
        确定此类型是否声明为静态。 只有嵌套类型可以声明为静态,因此对于任何包级别类型,数组类型或原始类, false返回false
        结果
        true如果这种类型是静态的; 否则为假。
      • isAbstract

        boolean isAbstract​()
        确定此类型是否被声明为抽象。

        对于数组( ArrayType )和原始类,返回值未定义。

        结果
        true如果这个类型是抽象的; 否则为假。
      • isFinal

        boolean isFinal​()
        确定此类型是否被声明为final。

        对于数组( ArrayType )和原始类,返回值始终为真。

        结果
        true如果这种类型是最终的; 否则为假。
      • isPrepared

        boolean isPrepared​()
        确定此类型是否已准备好。 有关类准备的定义,请参阅JVM规范。

        对于数组( ArrayType )和原始类,返回值未定义。

        结果
        true如果这种类型是准备的; 否则为假。
      • isVerified

        boolean isVerified​()
        确定此类型是否已被验证。 有关类验证的定义,请参阅JVM规范。

        对于数组( ArrayType )和原始类,返回值未定义。

        结果
        true如果这种类型被验证; 否则为假。
      • isInitialized

        boolean isInitialized​()
        确定此类型是否已初始化。 有关类验证的定义,请参阅JVM规范。 对于InterfaceType ,此方法总是返回与isPrepared()相同的值。

        对于数组( ArrayType )和原始类,返回值未定义。

        结果
        true如果此类型已初始化; 否则为假。
      • failedToInitialize

        boolean failedToInitialize​()
        确定此类的初始化失败。 有关类初始化的详细信息,请参阅JVM规范。

        对于数组( ArrayType )和原始类,返回值未定义。

        结果
        true如果尝试初始化并失败; 否则为假。
      • fields

        List<Field> fields​()
        返回包含此类型中声明的每个Field的列表。 不包括继承的字段。 编译器创建的任何合成字段都包含在列表中。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        一个列表Field对象; 如果没有字段存在,该列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • visibleFields

        List<Field> visibleFields​()
        返回一个列表,其中包含这种类型的每个未隐藏和明确的Field 包括可以从类或其实例以其简单名称访问的每个字段。 在最近继承的类中,具有相似名称的字段隐藏的字段被继承的字段或隐藏的字段不能被其简单的名称访问,并且不会包含在返回的列表中。 包括所有其他继承的字段。 有关详细信息,请参见JLS第8.3节。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        一个Field对象的列表; 如果没有可见字段存在,该列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • allFields

        List<Field> allFields​()
        返回包含此类型中声明的每个Field及其超类,已实现的接口和/或超级接口的列表。 包括所有已声明和继承的字段,无论它们是否被隐藏或乘法继承。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        一个Field对象的列表; 如果没有字段存在,该列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • fieldByName

        Field fieldByName​(String fieldName)
        使用给定的非歧义名称查找可见的Field 该方法遵循JLS(8.3.3)中指定的继承规则,以确定可见性。

        对于数组( ArrayType )和原始类,返回的值始终为空。

        参数
        fieldName - 一个包含所需字段名称的字符串。
        结果
        一个Field对象,它反映找到的字段,如果没有给定名称的字段或者给定的名称是不明确的,则为null。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • methods

        List<方法> methods​()
        返回一个列表,其中包含直接在此类型中声明的每个方法 不包括继承的方法。 构造函数,初始化方法(如果有的话)以及由编译器创建的任何合成方法都包含在列表中。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        一个列表方法对象; 如果没有方法,列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • visibleMethods

        List<方法> visibleMethods​()
        返回包含此类型声明或继承的每个方法的列表。 不包括已被隐藏或覆盖的超类或超级界面的方法。

        请注意,尽管有这种排除,具有相同签名的多个继承方法可以存在于返回的列表中,但最多可以是ClassType的成员。 有关详细信息,请参见JLS第8.4.6节。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        一个方法对象的列表; 如果不存在可见方法,列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个班还没准备好
      • allMethods

        List<方法> allMethods​()
        返回包含此类型中声明的每个方法及其超类,实现的接口和/或超级接口的列表。 包括所有声明和继承的方法,无论它们是隐藏还是被覆盖。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        一个方法对象的列表; 如果没有方法,列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • methodsByName

        List<方法> methodsByName​(String name)
        返回一个列表,其中包含具有给定名称的每个可见的方法 这是最常用来查找重载的方法。

        不包括重写和隐藏的方法。 详见JLS(8.4.6)。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        参数
        name - 要查找的方法的名称。
        结果
        与给定名称匹配的方法对象的列表; 如果找不到匹配的方法,列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • methodsByName

        List<方法> methodsByName​(String name,
                                   String signature)
        返回一个列表,其中包含具有给定名称和签名的每个可见的方法 签名字符串是目标方法的JNI签名:
        • ()V
        • ([Ljava/lang/String;)V
        • (IIII)Z
        该方法遵循JLS(8.4.6)中指定的继承规则,以确定可见性。

        列表中最多只有一个方法是具体的方法和组件ClassType ; 列表中的其他任何方法都是抽象的。 使用ClassType.concreteMethodByName(java.lang.String, java.lang.String)仅检索匹配的具体方法。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        参数
        name - 要查找的方法的名称。
        signature - 方法的签名查找
        结果
        符合给定名称和签名的方法对象的列表; 如果找不到匹配的方法,列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个课程尚未准备好
      • nestedTypes

        List<ReferenceType> nestedTypes​()
        返回一个包含ReferenceType在此类型中声明并且当前加载到虚拟机中的对象的列表。 包括静态嵌套类型和非静态嵌套类型(即内部类型)。 本地内部类型(在此引用类型的某个代码块中声明)也包含在返回的列表中。

        对于数组( ArrayType )和原始类,返回的列表始终为空。

        结果
        嵌套ReferenceType对象列表; 如果没有嵌套类型,列表的长度为0。
      • getValue

        Value getValue​(Field field)
        获取Value给定的静态Field这种类型。 该字段必须对此类型有效; 也就是说,它必须在此类型中声明,超类,超级接口或已实现的接口。
        参数
        field - 包含请求值的字段
        结果
        实例字段的Value
        异常
        IllegalArgumentException - 如果该字段对该对象的类无效。
      • classObject

        ClassObjectReference classObject​()
        返回与目标VM中此类型对应的类对象。 VM为每种类型的ReferenceType创建类对象:类,接口和数组类型。
        结果
        目标VM中的此引用类型的ClassObjectReference
      • allLineLocations

        List<Location> allLineLocations​(String stratum,
                                        String sourceName)
                                 throws AbsentInformationException
        在此引用类型中,为每个可执行源行返回一个包含Location对象的列表。 每个位置将源行映射到一系列代码索引。 范围的开始可以通过Location.codeIndex()确定。 如果编译器和/或VM将该行映射到两个或更多个不相交的代码索引范围,则返回的列表可能包含特定行号的多个位置。 请注意,相同的源代码行可以用不同的方法表示不同的代码索引范围。

        对于数组( ArrayType )和原始类,返回的列表始终为空。 对于接口( InterfaceType ),只有在接口具有类初始化中的可执行代码时,返回的列表将不为空。

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

        参数
        stratum -该层来检索或信息 nulldefaultStratum()
        sourceName - 仅在此源文件或 null中返回位置以返回位置。
        结果
        所有源代码列表Location对象。
        异常
        AbsentInformationException - 如果AbsentInformationException没有行号信息,并且此类的非本机非抽象可执行成员。 或者,如果SOURCENAME是非null和源名信息不存在。
        ClassNotPreparedException - 如果这个班还没准备好
        从以下版本开始:
        1.4
      • locationsOfLine

        List<Location> locationsOfLine​(String stratum,
                                       String sourceName,
                                       int lineNumber)
                                throws AbsentInformationException
        返回包含映射到给定行号的所有Location对象的列表。

        对于数组( ArrayType )和原始类,返回的列表始终为空。 对于接口( InterfaceType ),返回的列表将不会为空,只有当接口在其类初始化中具有指定行号的可执行代码时才会生效 如果指定的行号没有可执行代码,将返回一个空列表。

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

        参数
        stratum - 用于比较行号和源名称的层次,或 null使用 defaultStratum()
        sourceName - 包含行号的源名称,或匹配所有源名称的 null
        lineNumber - 行号
        结果
        一个映射到给定行的所有Location对象的列表。
        异常
        AbsentInformationException - 如果AbsentInformationException没有行号信息。 或者,如果SOURCENAME是非null和源名信息不存在。
        ClassNotPreparedException - 如果这个课程尚未准备好
        从以下版本开始:
        1.4
      • availableStrata

        List<String> availableStrata​()
        返回此参考类型的可用层。

        有关层的描述,请参阅Location

        结果
        java.lang.String列表,每个代表一个层次
        从以下版本开始:
        1.4
      • defaultStratum

        String defaultStratum​()
        返回此引用类型的默认层次。 该值在类文件中指定,不能由用户设置。 如果类文件未指定默认层次,则返回基层( "Java" )。

        有关层的描述,请参阅Location

        从以下版本开始:
        1.4
      • equals

        boolean equals​(Object obj)
        将指定的Object与此ReferenceType进行比较以获得相等性。
        重写:
        equalsObject
        参数
        obj - 与之比较的参考对象。
        结果
        如果对象是ReferenceType ,如果ReferenceTypes属于同一VM,并且它们镜像对应于该VM中的java.lang.Class的相同实例的类,则为true。
        另请参见:
        Object.hashCode()HashMap
      • constantPoolCount

        int constantPoolCount​()
        返回常量池中的条目数加上一个。 这对应于Java虚拟机规范中的类文件格式的constant_pool_count项。 对于数组( ArrayType )和原始类,返回的常量池计数值为零。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canGetConstantPool()确定是否支持该操作。
        结果
        一个类的常量池条目的总数加一个。
        异常
        UnsupportedOperationException - 如果目标虚拟机不支持此操作 - 请参阅 canGetConstantPool()
        从以下版本开始:
        1.6
        另请参见:
        constantPool()
      • constantPool

        byte[] constantPool​()
        以Java虚拟机规范中的类文件格式的constant_pool项的格式返回常量池的原始字节。 恒定池的格式可能因“文件格式”的版本而有所不同,因此,应检查次要和主要版本号是否兼容。 对于数组( ArrayType )和原始类,返回零长度字节数组。 并非所有目标虚拟机都支持此操作。 使用VirtualMachine.canGetConstantPool()确定是否支持该操作。
        结果
        常量池的原始字节。
        异常
        UnsupportedOperationException - 如果目标虚拟机不支持此操作 - 请参阅 canGetConstantPool()
        从以下版本开始:
        1.6
        另请参见:
        constantPoolCount()