private static final long serialVersionUID = 6977402643848374752L;
private static final long serialVersionUID = 1L;
Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。
在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidClassException)
我是这样理解的,你对外提供接口时。
你修改了该对象,那你就修改一下serialVersionUID的值,随便改。
假如你对象原本有属性是string a;
改成了int a;
或者你把string a;删了
那就不同步了呀,除非你比如增加一个string b;开放接口时,对方根本不会用到,那你可以不用修改serialVersionUID的值。