是否可以使用我的自定义序列化或序列化类的瞬态字段 使用外化?
示例:有一个具有名称字段瞬态的类Person
transient String name;
是否可以使用以下方法对其进行序列化?
private void writeObject(ObjectOutputStream out) throws IOException;
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;
答案 0 :(得分:5)
如果您使用自定义序列化,答案是肯定的。当我们通过覆盖writeObject
方法进行自定义序列化时,您可以控制序列化并可以执行任何操作。因此,您还可以指定或使用transient
字段的值,也可以将其与其他类属性一起编组。
答案 1 :(得分:0)
您可以在writeObject / readObject中写入/读取任何字段,包括transient。然而,首先隐藏具有瞬态的字段然后简单地使用自定义序列化来编写/读取它没有多大意义。通常,瞬态字段根本不是序列化的,或者需要使用自定义序列化进行一些特殊处理。
至于外化,它忽略了瞬态,所有字段都是明确写入/读取的。