我需要为我的一个项目深度复制 Java 对象;我想知道是否可以为此使用序列化。
这些对象相当小(每个< 1kb),每个副本的总#objects 将< 500,并且每天将调用几次复制例程。在这种情况下,是否可以在生产中使用序列化,或者考虑到序列化的性能,这仍然是一个非常糟糕的主意?
如果这仍然是一个坏主意,我可以考虑为每个此类使用复制构造函数/静态复制方法来提高性能。还有其他方法吗?
我需要为我的一个项目深度复制 Java 对象;我想知道是否可以为此使用序列化。
这些对象相当小(每个< 1kb),每个副本的总#objects 将< 500,并且每天将调用几次复制例程。在这种情况下,是否可以在生产中使用序列化,或者考虑到序列化的性能,这仍然是一个非常糟糕的主意?
如果这仍然是一个坏主意,我可以考虑为每个此类使用复制构造函数/静态复制方法来提高性能。还有其他方法吗?
也许。性能将不是问题 - 依赖关系将是。
序列化的常见问题是,对应用程序中某个核心类的无害引用可以为您提供所有生命实例的 90% 的副本,因为它们突然变得可访问。所以你必须非常小心transient
你使用的参考资料。
更糟糕的是,如果您需要序列化以进行深度复制和真实状态保存,您最终可能会遇到不兼容的目标:
因此,使用复制构造函数通常比使用“聪明的黑客”更好,即使它现在可能会保护你一些/很多时间。