除了提供瞬态关键字之外,我们是否可以拒绝 Java 对象的序列化

我们可以通过使用关键字来避免序列化字段。有没有其他方法可以做到这一点?transient


答案 1

http://java.sun.com/javase/6/docs/platform/serialization/spec/security.html

摘要:防止对包含敏感数据的敏感数据字段进行序列化,不应序列化;这样做会将其值公开给有权访问序列化流的任何一方。有几种方法可以防止序列化字段:

  1. 将字段声明为专用瞬态。
  2. 定义相关类的串行 PersistentFields 字段,并从字段描述符列表中省略该字段。
  3. 编写一个特定于类的序列化方法(即 writeObject 或 writeExternal),该方法不将字段写入序列化流(即,通过不调用 ObjectOutputStream.defaultWriteObject)。

以下是一些链接。

声明 serialPersistenetFields.

序列化体系结构规范。

对象序列化中的安全性。


答案 2

如果由于某种原因暂时性不适合,则可以通过重写 writeObject 和 readObject 方法直接进行序列化。然后,您可以包含或省略所需的任何字段。