我使用
ObjectOutputStream(FileOutputStream(File))
序列化我的对象,并使用类似的 InputStreams
反序列化它们。有没有办法查看这些序列化文件的内部(最好在 Eclipse 中),以便我可以检查是否写入了所有必要的属性?
编辑:谷歌搜索是否定的
编写一些测试(使用 Eclipse 的内置 JUnit 支持)。
“查看内部”这些文件的唯一方法是使用
ObjectInputStream(FileInputStream(File))
,除非您是字节码专家并使用十六进制编辑器。如果您确实进行了一些测试,则无需“查看内部”任何内容。
虽然这不是一个成熟的编辑器,但 Eamonn McManus 编写了一个转码器,可以将序列化的 blob 解密为人类可读的形式。 http://weblogs.java.net/blog/2007/06/12/disassemble-serialized-java-objects
如果考虑二进制兼容性和性能,那么现在是研究Externalized而不是Serialized的好时机。
这不是一个“独立”的答案,只是 OrangeDog 答案的扩展。
“编写一些测试(使用 Eclipse 内置的 JUnit 支持)。”
如果您想测试序列化,请编写执行以下操作的测试:
编写一个类来加载文件并反序列化对象。然后使用 Eclipse 的调试视图浏览对象(通过设置断点)。
我找到了SerializationDumper,下载了它的v1.13二进制jar,并且很快就能够读取序列化文件。
正如您可能期望的那样,工具本身不使用(或需要访问)相应的
.class
文件,文本输出相当神秘 - 但我能够破译包含 的小对象的内容String[]
、一个 HashSet
和一个 boolean
。