Module jdk.jdi
Package com.sun.jdi

Interface ArrayReference

所有超接口:
Mirror, ObjectReference, Value

public interface ArrayReference extends ObjectReference
提供对目标VM中数组对象及其组件的访问。每个数组组件都由一个Value对象进行镜像。数组组件总体上被放置在List对象中,而不是数组,以保持与API的一致性并与其他API进行互操作。
自 JDK 版本:
1.3
  • Method Details

    • 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()
    • setValue

      void setValue(int index, Value value) throws InvalidTypeException, ClassNotLoadedException
      用另一个值替换数组组件。

      对象值必须与组件类型兼容(这意味着组件类型必须通过声明类的类加载器加载)。原始值必须与组件类型兼容,或者必须能够在不丢失信息的情况下转换为组件类型。有关赋值兼容性的更多信息,请参见 JLS 第 5.2 节。

      参数:
      index - 要设置的组件的索引
      value - 新值
      抛出:
      IndexOutOfBoundsException - 如果 index 超出此数组的范围,即,如果以下任一情况为真:
          index < 0
          index >= length() 
      InvalidTypeException - 如果 value 的类型与数组组件的声明类型不兼容。
      ClassNotLoadedException - 如果数组组件类型尚未通过适当的类加载器加载。
      VMCannotBeModifiedException - 如果虚拟机是只读的 - 请参阅VirtualMachine.canBeModified()
      参见:
    • setValues

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

      对象值必须与元素类型兼容(这意味着组件类型必须通过封闭类的类加载器加载)。原始值必须与组件类型兼容,或者必须能够在不丢失信息的情况下转换为组件类型。有关赋值兼容性的更多信息,请参见 JLS 第 5.2 节。

      参数:
      values - 要放置在此数组中的Value对象列表。如果 values.size() 小于数组的长度,则设置前 values.size() 个元素。
      抛出:
      InvalidTypeException - 如果任何新的 values 与数组组件的声明类型不兼容。
      ClassNotLoadedException - 如果数组组件类型尚未通过适当的类加载器加载。
      VMCannotBeModifiedException - 如果虚拟机是只读的 - 请参阅VirtualMachine.canBeModified()
      参见:
    • 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.canBeModified()
      ClassNotLoadedException
      参见: