java - 如何验证对象序列化机制?

标签 java

我正在尝试验证我的自定义 Java 对象是否已正确序列化/反序列化,并且我可以对文件、流等使用此序列化机制。这是我创建的测试。这是正确的做法吗?

public class SerializableTest {
  @Test public void shouldSerialize() throws Exception {
    Foo foo = new Foo(123);

    // serialize it to a string
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    new ObjectOutputStream(out).writeObject(foo);
    String written = out.toString();

    // read it back
    ByteArrayInputStream in = new ByteArrayInputStream(written.getBytes());
    Foo foo2 = (Foo)(new ObjectInputStream(in).readObject());

    // check that two objects are identical
    assertEquals(foo, foo2);
  }
}

这里出了什么问题?

最佳答案

替换

String written = out.toString();

byte[] written = out.toByteArray();

您不能将随机二进制数据存储为字符串。字符串用于文本。

关于java - 如何验证对象序列化机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926000/

相关文章:

java - JavaFX可以在树莓派上使用吗

java - 谷歌 LVL(许可证验证库): is it possible to run the app on a device without Google Play?

Java Swing 编程结构 : are listeners supposed to be the source of almost all Swing components?

java - 如何将字符串写入文本文件?

java - Shiro 什么时候调用 doGetAuthorizationInfo 方法?

java - 使用Gson解析不同字段的子类

java - MimeTypeMap 无法返回包含空格的文件名的扩展名

java - android文档中的 "Inherited constants"和 "Inherited fields"有什么区别?

java - 为 Scanner 类创建一个实例,但不为 java 中的 Math 类创建一个实例?

java - 将字符串从 Activity 传递到广播接收器,然后传递到 Service