3

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

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

transient String name;

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

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

2 回答 2

5

如果您使用的是自定义序列化,答案是肯定的。当我们通过重写writeObject方法进行自定义序列化时,您可以控制序列化并可以做任何您想做的事情。因此,您还可以分配或使用transient字段的值,还可以将其与其他类属性一起编组。

于 2013-09-04T05:15:28.773 回答
0

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

至于外部化它忽略瞬态,所有字段都被显式写入/读取。

于 2013-09-04T05:23:27.247 回答