模块  jdk.jdi
软件包  com.sun.jdi

Interface ArrayReference

  • All Superinterfaces:
    MirrorObjectReferenceValue

    public interface ArrayReference
    extends ObjectReference
    提供对目标VM中的阵列对象及其组件的访问。 每个阵列组件都由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()