关于java的序列化以及反序列化过程
package android;
import java.io.*;
//Serializable是个空接口
public class User implements java.io.Serializable {
@Override
public String toString() {
return "User{" +
"userid=" + userid +
", username='" + username + ''' +
", isMale=" + isMale +
'}';
}
private static final long serialVersionUID=1L;
public int userid;
public String username;
public boolean isMale;
public User(int id,String name,boolean f){
this.userid=id;
this.username=name;
this.isMale=f;
}
public static void main(String args[]) throws IOException, ClassNotFoundException {
//序列化过程
User user=new User(0,"jack",true);
ObjectOutputStream outputStream=new ObjectOutputStream(new FileOutputStream("catch.txt"));
outputStream.writeObject(user);
outputStream.close();
//反序列化过程
ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("catch.txt"));
User user1= (User) objectInputStream.readObject();
System.out.println("载入数据"+user);
System.out.println(user.toString());
System.out.println("-------------------");
System.out.println("读取数据"+user1);
System.out.println(user1.toString());
objectInputStream.close();
}
}
在代码中的Serializable是个空接口,通过FileInputStream来进行序列化到catch.txt中 进行持久化保存,在这之后在通过FileOutputStream来进行反序列化,通过读取里面的状态进行赋值给新的对象。但是两这不是同一个对象,接下来给大家提供保存状态文件截图,程序运行截图。
保存文件截图
文件内容(序列化后的文件内容)
程序运行结果:
还有关于“private static final long serialVersionUID=1L;”这行代码的解释作用就是用来序列化和反序列化来进行配对解析的,通过是否匹配id来进行解析。以上是个人理解有不同的理解可以多多沟通,谢谢大家