Java序列化之四: 进一步思考
1,当需要被序列化的类对象中的一部分成员变量是不可被序列化的,会发生什么情况呢?
例如下面的的代码
public class Resume { private String work; public String getWork() { return work; } public void setWork(String work) { this.work = work; } public String getCollege() { return college; } public void setCollege(String college) { this.college = college; } private String college;} public Person(String str, int n) { System.out.println("Inside Person's Constructor"); name = str; age = n; } String getName() { return name; } int getAge() { return age; }}执行以上的代码可以发现,当Person对象的resume被赋值之后,序列化时
会发生NotSerializableException。单就这一个问题,就带来了很大的复杂性。因为当一个
系统中的类定义很多的时候,很难判断某一个类成员是否是Serilizable的。
2,当JDK版本切换之后,序列化过程会不会出错。
答案:应该不会出错(未验证)
参见以下网址
http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html
http://stackoverflow.com/questions/152757/is-java-object-serialization- compatible-between-1-5-and-1-6
3,transient关键字
被transient修饰的成员变量不会被序列化。当实例1中的resume被transient修饰的时候,就不会抛出NotSerializableException。