class Bar {
Bar()
{
a = 1;
System.out.println("Bar..." + a);
}
protected int a;
}
class Bar1 extends Bar implements Serializable
{
Bar1(double b)
{
this.b = b;
System.out.println("Bar1..." + b);
}
Bar1()
{
this.b = 1.5;
System.out.println("Bar1..." + b);
}
protected double b;
}
class Bar2 extends Bar1
{
/**
*
*/
private static final long serialVersionUID = 270589360374420361L;
Bar2()
{
super();
c = 3;
System.out.println("Bar2..." + c);
}
protected int c;
}
代码是这样的,主函数里面是:
String file = "C:\\JAVA\\1.txt";
Bar2 bar2 = new Bar2();
// objectSerialize(bar2, file);
objectDeserialize(bar2, file);
System.out.println(bar2);
抛出了一坨异常:
Exception in thread "main" java.io.InvalidClassException: com.clcl.io.Bar1; local class incompatible: stream classdesc serialVersionUID = 7973625721886668699, local class serialVersionUID = -1556330232670652696
at java.base/java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:689)
at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1894)
at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1763)
at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1894)
at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1763)
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2051)
at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1585)
at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
at com.clcl.io.FileTest.objectDeserialize(FileTest.java:83)
at com.clcl.io.FileTest.main(FileTest.java:44)