【问题标题】:Deep Clone Non Seriazable object in javajava中的深度克隆不可序列化对象
【发布时间】:2020-05-09 00:30:16
【问题描述】:

我需要深度克隆一个对象,该对象具有一些非序列化对象作为 Java 中的成员。 你能提供一些参考我能用什么吗?

注意: 请提供一些java标准库的参考。我不想使用任何未经批准/私有的包或库。 或者一些代码指针我如何克隆对象?

【问题讨论】:

  • 可序列化和可克隆是两个不同的东西......
  • @f1sh 在内存中 Java 序列化被用作复制对象的 hack。
  • @TomHawtin-tackline 是一个非常糟糕的 hack,瞬态字段呢?
  • @f1sh 如果您不希望序列化形式中的瞬态字段,也不应该在“深度克隆”中复制它们。在实践中,我相信/希望,通常使用瞬态,因为串行表示不同于对象表示 - 例如Lists 写出每个元素而不是数组、双向链表(对于 Java 序列化来说很糟糕,顺便说一句)或其他任何东西。

标签: java object serialization clone


【解决方案1】:

在 Java 中没有值标准化的情况下,我强烈建议避免任何不可靠的反射/代码生成方案。

如果可以,更改为不可变类型无需复制。

除此之外,只需整齐地编写代码。如果集合很多,写map方法将有助于避免Streams的废话(并且更快)。

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 2010-09-09
    • 2017-02-23
    • 2023-04-01
    相关资源
    最近更新 更多