将Java对象序列化为Java代码

时间:2020-03-06 14:20:34  来源:igfitidea点击:

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

解决方案

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

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

有两种显而易见的方法:

  • 将序列化的数据编码为文字字符串,然后反序列化。
  • 使用java.beans XML持久性,使用我们喜欢的XML-> Java源技术应该足够容易地进行处理。

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

例如,一个快速的Google开启了XStream。我从未使用过它,但似乎支持除XML等之外的多个后端。 JSON。我们可以实现自己的编写器,而只写出重新创建层次结构所需的Java代码。

我确定我们可以对其他库执行相同的操作,特别是如果我们可以加入SAX事件流。

看:
HierarchicalStreamWriter

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

确实,对象状态没有包含足够的信息来知道如何创建和转换它是正确的,但是,对于简单的Java bean,没有理由不应该这样做。

我们是否想为此目的编写一个小型图书馆?我将尽快开始编码!