揭开 Java 中的瞬态字段:了解持久性控制
Java 中的序列化涉及将对象的状态转换为字节流进行存储,从而允许稍后重新创建该对象。然而,某些字段可能不希望持久存在,从而导致引入瞬态字段。
瞬态字段:定义
瞬态字段,由“瞬态字段”表示" 关键字是那些不应包含在对象的序列化状态中的关键字。这意味着当一个对象被序列化时,它的瞬态字段将被跳过。
瞬态字段的用途
考虑存储图像和的 GalleryImage 类的示例缩略图:
class GalleryImage implements Serializable { private Image image; private transient Image thumbnailImage; }
thumbnailImage 源自图像,不应与原始图像一起存储 图像。将其标记为瞬态可防止其序列化。这优化了存储空间并消除了序列化错误的可能性。
反序列化和瞬态字段
反序列化后,对象的状态将恢复到创建时的状态序列化。但是,对于瞬态字段,它们不会自动恢复。例如,在GalleryImage类中,反序列化后thumbnailImage仍然为null。要解决此问题,可以重写 readObject 方法以通过编程方式生成缩略图:
private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException { inputStream.defaultReadObject(); generateThumbnail(); }
瞬态字段的好处
以上是Java 序列化中瞬态字段如何控制持久性?的详细内容。更多信息请关注PHP中文网其他相关文章!