我正在实现一个可序列化的类(因此它是一个使用 RMI 的值对象)。但我需要测试它。有没有办法轻松做到这一点?
澄清:我正在实现这个类,所以在类定义中粘贴 Serializable 很简单。我需要手动对其进行序列化/反序列化以查看它是否有效。
我找到了 C# question ,Java有类似的答案吗?
最佳答案
简单的方法是检查对象是 java.io.Serializable
或 java.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/