为不在同一路径中的类编写自定义java序列化程序

时间:2013-05-03 18:05:31

标签: java serialization

所以我想为我的一些课程编写自定义序列化程序。我需要两种格式,一种是人类可读和可编辑的yaml格式,另一种仅供内部使用,可以是二进制格式。我知道Externalizable,但由于我有两种格式,我不确定这是否合适。

理想情况下,我希望将自定义序列化程序作为单独的包中的单独类。这是因为如果我编写一个通用的序列化程序,我想将它用于所有类,而不仅仅是特定包中的类。我也希望远离JavaBeans,因为我不会总是对我想要序列化的类进行代码访问。

但这就是我遇到困难的地方,我想要访问类中的私有变量,我知道我可以使用反射“禁用”私有,但这不会阻止我在许多java系统上运行它由于安全?

我应该如何编写通用序列化器?

1 个答案:

答案 0 :(得分:1)

编写您自己的自定义序列化。对于二进制编码,使用Java的序列化。要将其编码为人类可读格式,您可以将类转换为JSON / XML格式。可以使用Google Gson库将Java类转换为JSON,反之亦然。

因此,要编写通用序列化,请使用Java内置序列化API和您自己的技术将对象转换为人类可读格式。

<强>更新

您可以使用反射技术创建自己的自定义人类可读对象格式。有关反射的详细信息,您可以阅读我的blog

相关问题