加transient過后,自己序列化和反序列化后得到的還是0?
public class Student implements Serializable{
private String stuno;
private String stnname;
private transient int stuage;//transient修飾的屬性不會進行jvm默認的序列化,也可以自己完成序列化
public Student(){
}
@Override
public String toString() {
return "Student [stuno=" + stuno + ", stnname=" + stnname + ", stuage="
+ stuage + "]";
}
public Student(String stuno, String stnname, int stuage) {
super();
this.stuno = stuno;
this.stnname = stnname;
this.stuage = stuage;
}
public String getStuno() {
return stuno;
}
public void setStuno(String stuno) {
this.stuno = stuno;
}
public String getStnname() {
return stnname;
}
public void setStnname(String stnname) {
this.stnname = stnname;
}
public int getStuage() {
return stuage;
}
public void setStuage(int stuage) {
this.stuage = stuage;
}
private void WriteObject(java.io.ObjectOutputStream s)throws java.io.IOException{
s.defaultWriteObject();//把虛擬機能默認進行虛擬化的元素進行序列化操作
s.writeInt(stuage);//自己完成transient序列化修飾的屬性
}
private void ReadObject(java.io.ObjectInputStream s)throws java.io.IOException, ClassNotFoundException{
s.defaultReadObject();
this.stuage=s.readInt();
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectSeriaDemo {
public static void main(String[] args)throws IOException, ClassNotFoundException{
String file="demo/obj.bat";
ObjectOutputStream oos=new ObjectOutputStream(
new FileOutputStream(file));
Student stu= new Student("1001","張三",20);
oos.writeObject(stu);
oos.flush();
oos.close();
ObjectInputStream ois=new ObjectInputStream(
new FileInputStream(file));
Student stu1=(Student)ois.readObject();
System.out.println(stu1);
ois.close();
}
}
2016-12-27
WriteObject和ReadObject方法寫錯了,首字母應(yīng)該小寫