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

Interface ArrayReference

  • All Superinterfaces:
    MirrorObjectReferenceValue


    public interface ArrayReference
    extends ObjectReference
    提供对目标虚拟机中数组对象及其组件的访问。 每个阵列组件由Value对象镜像。 集合中的数组组件放置在List对象中,而不是数组,以与API的其余部分保持一致,并与其他API的互操作性。
    从以下版本开始:
    1.3
    • 方法详细信息

      • length

        int length​()
        返回此数组中的组件数。
        结果
        该数组中的组件的整数计数。
      • getValue

        Value getValue​(int index)
        返回数组组件值。
        参数
        index - 要检索的组件的索引
        结果
        在指定的Value
        异常
        IndexOutOfBoundsException - 如果index在此数组的范围之外,也就是说,如果满足以下任一条件:
          index < 0
            index >= length() 
      • getValues

        List<Value> getValues​()
        返回此数组中的所有组件。
        结果
        一个Value对象的列表,每个数组组件一个由数组索引排序。 对于零长度数组,返回一个空列表。
      • getValues

        List<Value> getValues​(int index,
                              int length)
        返回一系列数组组件。
        参数
        index - 要检索的第一个组件的索引
        length - 要检索的组件的数量,或-1将所有组件检索到该数组的末尾。
        结果
        一个Value对象的列表,每个请求的数组组件一个由数组索引排序。 当指定范围内没有元素(例如, length为零)时,将返回一个空列表
        异常
        IndexOutOfBoundsException - 如果使用indexlength指定的范围不在数组范围内,也就是说,如果满足以下任一条件:
          index < 0
            index > length() 
        或者如果是length != -1并且以下任一项为真:
          length < 0
            index + length >  length() 
      • setValues

        void setValues​(List<? extends Value> values)
                throws InvalidTypeException,
                       ClassNotLoadedException
        用其他值替换所有数组组件。 如果给定的列表的大小大于数组,列表末尾的值将被忽略。

        对象值必须与元素类型分配兼容(这意味着组件类型必须通过封闭类的加载器加载)。 原始值必须与组件类型兼容,或必须可转换为组件类型,而不会丢失信息。 有关分配兼容性的更多信息,请参阅JLS第5.2节。

        参数
        values - 要放置在此数组中的Value对象的列表。 如果values.size()小于数组的长度,则首先设置values.size()元素。
        异常
        InvalidTypeException - 如果任何新的 values与声明的阵列组件类型不兼容。
        ClassNotLoadedException - 如果数组组件类型尚未通过适当的类加载器加载。
        VMCannotBeModifiedException - 如果VirtualMachine是只读的,请参阅 VirtualMachine.canBeModified()
        另请参见:
        ArrayType.componentType()
      • setValues

        void setValues​(int index,
                       List<? extends Value> values,
                       int srcIndex,
                       int length)
                throws InvalidTypeException,
                       ClassNotLoadedException
        用其他值替换一系列阵列组件。

        对象值必须与组件类型分配兼容(这意味着组件类型必须通过封闭类的加载器加载)。 原始值必须与组件类型兼容,或必须可转换为组件类型,而不会丢失信息。 有关分配兼容性的更多信息,请参阅JLS第5.2节。

        参数
        index - 要设置的第一个组件的索引。
        values - 要放置在此数组中的Value对象的列表。
        srcIndex - 要使用的第一个源值的索引。
        length - 要设置的组件的数量,或-1将所有组件设置为此阵列的末尾或 values的结尾(以先到者为准)。
        异常
        InvalidTypeException -如果任何元件 values不与声明的类型阵列组件的兼容。
        IndexOutOfBoundsException -如果与指定的数组范围indexlength不是阵列的范围内,或如果与指定的源范围srcIndexlength不是内values ,即,如果以下任意一项为真:
          index < 0
            index > length()
            srcIndex < 0
            srcIndex > values.size() 
        或者如果length != -1和以下任何一个是真的:
          length < 0
            index + length > length()
            srcIndex + length > values.size() 
        VMCannotBeModifiedException - 如果VirtualMachine是只读的,请参阅 VirtualMachine.canBeModified()
        ClassNotLoadedException
        另请参见:
        ArrayType.componentType()