Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';这是将Java对象反序列化为文件的最佳方法_Java_Serialization - Fatal编程技术网

什么';这是将Java对象反序列化为文件的最佳方法

什么';这是将Java对象反序列化为文件的最佳方法,java,serialization,Java,Serialization,我想将Java对象保存到文件中(用于稍后的单元测试)。我尝试过JSON,但由于我不拥有我正在序列化的对象的类,因此反序列化变得非常困难。(现有类的getter和setter使用不同的类型重载,Jackson无法确定如何反序列化该对象) 现在我正在探索其他途径(即序列化为二进制或其他格式)。我想知道是否有什么东西可以将Java对象转储到二进制/文件中,从而使反序列化变得微不足道。我知道您可以使用Serializable接口来实现这一点,但我不拥有这些未实现此接口的类,因此无法修改它们。如果它们实现

我想将Java对象保存到文件中(用于稍后的单元测试)。我尝试过JSON,但由于我不拥有我正在序列化的对象的类,因此反序列化变得非常困难。(现有类的getter和setter使用不同的类型重载,Jackson无法确定如何反序列化该对象)


现在我正在探索其他途径(即序列化为二进制或其他格式)。我想知道是否有什么东西可以将Java对象转储到二进制/文件中,从而使反序列化变得微不足道。我知道您可以使用
Serializable
接口来实现这一点,但我不拥有这些未实现此接口的类,因此无法修改它们。

如果它们实现
Serializable
您不需要拥有它们(也不需要修改它们),您可以使用
ObjectOutputStream
将它们写入文件,然后使用
ObjectInputStream


假设类有适当的getter和setter,那么这样做应该不会有问题。

您也可以使用它,它不依赖于实现了可序列化接口的类。

您也可以使用它。基准测试(和)表示,它是序列化/反序列化速度最快的产品之一,并且使用的空间也更少。它也不需要实现
Serializable
。也就是说,我从未亲自使用过它。

这就是问题所在:它们没有实现Serializable。getter和setter是不明确的,因此Jackson很难弄清楚如何反序列化对象。是否严格需要JSON输出类型?+1我正要发布这个答案。我对XStream有很好的经验:它速度快,提供干净的XML,解决最终字段的问题,等等。谢谢,我将尝试XStream,看看它是否能做Jackson做不到的事情:)如果他们没有实现
Serializable
,那么他们就不打算被序列化。我会问库的开发人员他们建议您做什么,或者您是否应该做其他事情。