gpt4 book ai didi

Java:序列化:如何仅存储引用,而不存储内容

转载 作者:行者123 更新时间:2023-11-30 05:56:56 25 4
gpt4 key购买 nike

我正在创建一个撤消重做机制。为了实现这一目标,我使用序列化。通过将当前状态写入 ByteArrayOutputStream、使用 ObjectOutputStream 并将 byte[] 放入 ArrayList 来记录当前状态。

但问题是,某些类持有对 BufferedImage 的引用/指针。由于它的大小,我不想序列化它(并且它没有实现 Serialized)。之所以不想写,是因为它永远不会改变。 但该类的每个实例都有不同的图像,因此 static 关键字不是解决方案。

我尝试解决的问题:

public transient BufferedImage img;

这会导致ObjectOutputStream不会序列化BufferedImage,但也不会存储引用。反序列化后,将为null

所以,简而言之,我想保留对对象的引用,而不是对象本身。这意味着,反序列化后我将能够使用 BufferedImage(因为它不会被垃圾收集器删除)。

非常感谢。

最佳答案

好的,很简单,保留 Map<String, BufferedImage>对于应用程序中某处的所有图像,让每个类序列化其图像的 key 。并在 readResolve()方法,从 map 上查找图像。

关于Java:序列化:如何仅存储引用,而不存储内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6549756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com