2.7 处理数组

在实现完整版的 serializeObject 之前, 考虑 序列化对象数组 的情况,如果把数组 强制类型转换Object[],当数组为 原始类型数组 时,类型转换将抛出 ClassCastException 异常。

原始类型数组 & 对象数组

数组需要分为两种情况,即原始类型组成的数组,和对象数组,对于对象数组,强制类型转换 仅仅 适用于对象数组,对原始类型数组不适用。我们需要一种 统一 的处理数组的方式。

java.lang.reflect.Array 提供了对 所有类型 数组的 反射操作,包括:获取数组长度、访问数组元素、实例化数组对象等等,该类提供的方法如下:

方法签名 说明
Object newInstance(Class componentType, int length) 创建一个元素类型为 componentType 长度为 length 的数组
Object newInstance(Class componentType, int[] dimensions) 创建一个元素类型为 componentType,数组 维度dimensions.length 的数组
int getLength(Object obj) 返回 obj 数组的长度
Object get(Object array, int index) 返回数组 arrayindex 位置的元素
boolean getBoolean(Object array, int index) 如果 数组元素为 boolean,则返回 index 位置的元素
void set(Object array, int index, Object value) 将数组 arrayindex 位置上的值设置为 value
void setBoolean(Object array, int index, boolean value) 如果 数组元素类型为 boolean,则将 index 位置的元素值设置为 value

注意

  • 数组类型Object 表示。
  • newInstance(Class type, int[] dimensions) 中,数组维度dimensions.length 表示。

results matching ""

    No results matching ""