是否可以使用我的自定义序列化或使用外化来序列化类的瞬态字段?

时间:2013-09-04 05:08:04

标签: java serialization deserialization transient

是否可以使用我的自定义序列化或序列化类的瞬态字段 使用外化?

示例:有一个具有名称字段瞬态的类Person

transient String name;

是否可以使用以下方法对其进行序列化?

private void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;

2 个答案:

答案 0 :(得分:5)

如果您使用自定义序列化,答案是肯定的。当我们通过覆盖writeObject方法进行自定义序列化时,您可以控制序列化并可以执行任何操作。因此,您还可以指定或使用transient字段的值,也可以将其与其他类属性一起编组。

答案 1 :(得分:0)

您可以在writeObject / readObject中写入/读取任何字段,包括transient。然而,首先隐藏具有瞬态的字段然后简单地使用自定义序列化来编写/读取它没有多大意义。通常,瞬态字段根本不是序列化的,或者需要使用自定义序列化进行一些特殊处理。

至于外化,它忽略了瞬态,所有字段都是明确写入/读取的。