将Java对象序列化为Java代码

时间:2008-09-18 09:31:28

标签: java

有人知道一个Java库,它将Java对象层次结构序列化为生成此对象层次结构的Java代码吗?与Object / XML序列化一样,只是输出格式不是二进制/ XML而是Java代码。

4 个答案:

答案 0 :(得分:3)

序列化数据表示对象的内部数据。没有足够的信息来确定您需要调用对象来重现内部状态的方法。

有两种明显的方法:

  • 将序列化数据编码为文字字符串并对其进行反序列化。
  • 使用java.beans XML持久性,这应该很容易使用您喜欢的XML-> Java源技术进行处理。

答案 1 :(得分:1)

我不知道任何库会开箱即用,但您应该能够将众多对象中的一个用于XML序列化库并自定义后端代码以生成Java。可能不会有太多代码。

例如,快速谷歌出现XStream。我从来没有使用它,但似乎支持除XML之外的多个后端 - 例如JSON。您可以实现自己的编写器,只需编写重新创建层次结构所需的Java代码。

我确信你可以对其他库做同样的事情,特别是如果你可以挂钩到SAX事件流。

请参阅: HierarchicalStreamWriter

答案 2 :(得分:1)

好问题。我正在考虑将对象序列化为java代码以使测试更容易。用例是将一些数据加载到db中,然后生成创建对象的代码,然后在测试方法中使用此代码来初始化数据,而无需访问DB。

在某种程度上,对象状态不包含足够的信息来知道它是如何被创建和转换的,但是,对于简单的java bean,没有理由不应该这样做。

你是否想为此目的写一个小型图书馆?我很快就会开始编码!

答案 3 :(得分:0)

XStream是我用于序列化为XML的序列化库。应该可以并且相当容易地扩展它以便它编写Java代码。