模块  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
      • sourceName

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

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

        对于数组( ArrayType )和基本类,始终抛出AbsentInformationException。

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

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

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

        参数
        stratum - 从声明类型的默认层或从 null检索信息的层。
        结果
        每个表示源名称的String对象列表
        异常
        AbsentInformationException - 如果源名称未知。

        对于数组( ArrayType )和基本类,始终抛出AbsentInformationException。

        从以下版本开始:
        1.4
      • sourcePaths

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

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

        参数
        stratum - 从声明类型的默认层或 null检索信息的层。
        结果
        每个表示源路径的String对象列表
        异常
        AbsentInformationException - 如果源名称未知。

        对于数组( ArrayType )和基本类,始终抛出AbsentInformationException。

        从以下版本开始:
        1.4
      • isStatic

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

        boolean isAbstract()
        确定此类型是否声明为abstract。

        对于数组( ArrayType )和基本类,返回值是未定义的。

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

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

        对于数组( ArrayType )和基本类,返回值始终为true。

        结果
        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如果尝试初始化并失败; 否则是假的。
      • 字段

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

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

        结果
        列表字段对象; 如果不存在字段,则列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个班级尚未准备好。
      • visibleFields

        List<字段> visibleFields()
        返回包含此类型中每个未隐藏且明确的字段的列表。 包含可以从类或其实例以其简单名称访问的每个字段。 模糊地乘法继承的字段或在最近继承的类中由具有相同名称的字段隐藏的字段不能通过其简单名称访问,并且不包括在返回的列表中。 包括所有其他继承的字段。 有关详细信息,请参阅JLS第8.3节。

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

        结果
        一个字段对象的列表; 如果不存在可见字段,则列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个班级尚未准备好。
      • allFields

        List<字段> allFields()
        返回一个列表,其中包含此类型中声明的每个字段及其超类,实现的接口和/或超接口。 包括所有声明和继承的字段,无论它们是隐藏还是多重继承。

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

        结果
        a 字段对象列表; 如果不存在字段,则列表的长度为0。
        异常
        ClassNotPreparedException - 如果这个班级尚未准备好。
      • fieldByName

        字段 fieldByName​(String fieldName)
        查找具有给定非模糊名称的可见字段 此方法遵循JLS(8.3.3)中指定的继承规则来确定可见性。

        对于数组( ArrayType )和基本类,返回的值始终为null。

        参数
        fieldName - 包含所需字段名称的字符串。
        结果
        镜像找到的字段的字段对象;如果没有给定名称的字段或给定名称不明确,则返回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)
        返回包含具有给定名称的每个可见方法的List。 这最常用于查找重载方法。

        不包括重写和隐藏方法。 有关详细信息,请参阅JLS(8.4.6)。

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

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

        List<方法> methodsByName​(String name,
                                   String signature)
        返回一个List,其中包含具有给定名称和签名的每个可见方法 签名字符串是目标方法的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对象的List, 这些对象在此类型中声明并且当前已加载到虚拟机中。 包括静态嵌套类型和非静态嵌套类型(即内部类型)。 本地内部类型(在此引用类型中的某个代码块中声明)也包含在返回的列表中。

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

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

        Value getValue​(字段 field)
        获取Value给定的静态字段这种类型。 该字段必须对此类型有效; 也就是说,它必须在此类型,超类,超接口或实现的接口中声明。
        参数
        字段 - 包含请求值的字段
        结果
        实例字段的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
        返回一个List,其中包含映射到给定行号的所有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进行比较以获得相等性。
        重写:
        equals在类 Object
        参数
        obj - 要与之比较的引用对象。
        结果
        如果Object是ReferenceType ,则为true ;如果ReferenceTypes属于同一VM,并且它们镜像对应于该VM中的java.lang.Class的相同实例的类。
        另请参见:
        Object.hashCode()HashMap
      • constantPoolCount

        int constantPoolCount()
        返回常量池中的条目数加1。 这对应于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()