2.3 理解 Filed 对象

serializeObject 必须将字段 序列化后的值 与该字段的 唯一标识 关联到一起,在 Java 中,声明类与字段名一起唯一标识一个字段,因此,接下来需要查询每个字段的 声明类字段名

上一节已经获取了代表对象字段的 Field 对象,通过 Field 对象可以获取字段名、声明类、限定符,以及获取、设置字段的值,Filed 提供的方法如下:

方法签名 说明
Class getType() 获取表示 字段类型Class 对象
Class getDeclaringClass() 获取 声明 该字段的类的 Class 对象
String getName() 获取字段名字
int getModifiers() 获取字段的限定符(int 格式)
Object get(Object obj) 获取 obj 对象中该类型的字段的值
boolean getBoolean(Object obj) 若字段为 boolean 类型,可以用该方法获取
void set(Object obj, Object value) obj 对象上的该字段值设置为 value
void setBoolean(Object obj, boolean value) 只能设置 boolean 类型的字段

注意

  • get 可以获取 任意类型 的字段值。
  • getBoolean 等只能获取 特定类型 的字段值,若类型不对应,则出错。

field 表示一个字段对象,则可获取其声明类和字段名,作为该字段的 唯一标识符

String fieldName = field.getName();
String fieldDeclClass = field.getDeclaringClass().getName();

将字段的 唯一标识符 (声明类 + 字段名)与 字段值 一起保存,反序列化器可以通过这些信息获取对象的 Field 对象,从而对字段赋值,在反序列化时,需要 加载 字段的声明类,所以将反序列化放在第三章讲解。

results matching ""

    No results matching ""