01 异常发生场景
-
当我使用readObject()方法时,弹出错误
//java.io.InvalidClassException: com.mashang.web.Student; local class incompatible: stream classdesc serialVersionUID = 1580175879713296211, local class serialVersionUID = 1 ObjectInputStream objectInputStream=null; ArrayList<Student> students=null; try { objectInputStream = new ObjectInputStream(new FileInputStream("D:\\桌面\\java38\\javase08\\java08\\1.txt")); students = (ArrayList<Student>) objectInputStream.readObject(); System.out.println("数据载入成功"); }
02 异常的产生原因
-
本地类不兼容,系统自动生成的序列码和默认序列码产生了冲突
-
需要手动设置序列码
03 解决方式
public class Student implements Serializable { //3873253909467204002,这是系统自动生成的 private static final long serialVersionUID = 1580175879713296211l;//这是默认的序列号 private Integer id; private String name; private Integer age; private String sex;
-
在实体类中加入一个局部变量serialVersionUID
-
由上列代码可以看出,二者不一致,所以产生了InvalidClassException异常