关于Java的序列化Serializable接口。

183 阅读1分钟

关于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来进行反序列化,通过读取里面的状态进行赋值给新的对象。但是两这不是同一个对象,接下来给大家提供保存状态文件截图,程序运行截图。

保存文件截图

image.png

文件内容(序列化后的文件内容)

image.png

程序运行结果: image.png

还有关于“private static final long serialVersionUID=1L;”这行代码的解释作用就是用来序列化和反序列化来进行配对解析的,通过是否匹配id来进行解析。以上是个人理解有不同的理解可以多多沟通,谢谢大家