java - 如何在 Java 中测试一个类是否正确实现了 Serializable(不仅仅是 Serializable 的实例)

标签 java serialization

我正在实现一个可序列化的类(因此它是一个使用 RMI 的值对象)。但我需要测试它。有没有办法轻松做到这一点?

澄清:我正在实现这个类,所以在类定义中粘贴 Serializable 很简单。我需要手动对其进行序列化/反序列化以查看它是否有效。

我找到了 C# question ,Java有类似的答案吗?

最佳答案

简单的方法是检查对象是 java.io.Serializablejava.io.Externalizable 的实例,但这并不能真正证明该对象确实是可序列化的。

唯一可以确定的方法是真正尝试一下。最简单的测试是这样的:

new ObjectOutputStream(new ByteArrayOutputStream()).writeObject(myObject);

并检查它不会引发异常。

Apache Commons Lang提供了一个更简短的版本:

SerializationUtils.serialize(myObject);

再次检查异常。

你还可以更加严格,检查它是否反序列化回原来的东西:

Serializable original = ...
Serializable copy = SerializationUtils.clone(original);
assertEquals(original, copy);

等等。

关于java - 如何在 Java 中测试一个类是否正确实现了 Serializable(不仅仅是 Serializable 的实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840356/

相关文章:

java - 如何在不使用 EOMONTH 的情况下在 Excel 中查找上个月的最后一天

java legacy application - 架构成熟度评估工具

java - 如何获取已排序的 Java ArrayList 的唯一索引?

java - swing 中的按钮列表

json - Golang 序列化/反序列化一个空数组而不是 null

c++ - 数据封装(网络编程)

c# - 使用 MonoTouch 发布反序列化 Protobuf 文件

java - 有谷歌声音API吗

jquery - 调用serialize()时更改元素的名称

java - 在 Java 中使用 JAXB 序列化树结构