gpt4 book ai didi

java - 将具有 transient 属性的对象写入流 (Java)

转载 作者:行者123 更新时间:2023-12-01 16:40:55 25 4
gpt4 key购买 nike

我想将一个对象及其 transient 属性写入流(或字节数组)中,以便能够在另一个虚拟机中重建它。我不想修改它的属性,因为该对象是遗留应用程序的一部分。

标准 Java 序列化机制没有帮助。我还有什么其他选择?

更新:我问这个问题的原因是我想修改现有的 Spring 应用程序。它之前在进程中调用了 bean 的方法,但现在我想将 bean 移动到单独的机器上并通过 HTTP 调用程序使用 Spring 远程处理。我对具有 transient 字段的参数有疑问,这些字段需要传递给此方法,但不需要在应用程序的其他部分中序列化。

最佳答案

嗯 - 如果一个属性被标记为 transient ,则意味着完全它并不意味着被视为对象持久状态的一部分,例如用于序列化。事实上,您想要这样做是一种代码味道,正确的解决方案是阻止这些字段处于 transient 。

假设无论出于何种原因您都无法修改目标类本身。我的第一个想法是,您可以通过实现 readObject() 和 writeObject() 方法来自定义序列化,但这也需要对目标类进行更改。

在这种情况下,您需要使用某种基于反射或基于元数据的 API 才能执行此操作。有许多库可以将对象与 XML 或 JSON 或 DB 行等相互转换。您最好的选择是使用其中之一将对象与“水合”形式相互转换(并且可能需要自定义它们,因为任何理智的序列化程序都会忽略 transient 字段)。选择哪一个取决于您当前的软件堆栈以及您的具体要求。

关于java - 将具有 transient 属性的对象写入流 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3150616/

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