1.出现乱码可能原因:
你的对象可能没有重写toString()方法。
2.重写了toStream()出现报错可能原因:
你使用ObjectOutputStream写入文件时对象类的toString()方法没有写,而是后面重写的,需要先对对象重写了toString()后再ObjectOutStream写入文件,最后用ObjectInputStream来读取文件,就可以输出对象了。一定要检查类加上标签没有:implements Serializable。
3.内部原因:
发生这种情况的原因是,序列号(serialVersionUID)改变了,每次序列化时.class文件和指定的文件都会产生一个相同的序列号,反序列化时会查看这两个序列号是否相同,相同才会执行。而如果你改动了对象类文件,没有进行序列化而是直接反序列化时.class文件序列号就改变了,而指定文件的序列号还是原来的就会出错。也可以通过固定序列号来解决:
直接在对象类中加private static final long serialVersionUID = 1L(常数就行);
这样即使改变了对象类文件,也可以直接反序列化指定文件。