七叶笔记 » java编程 » java实现序列化的方法

java实现序列化的方法

1、实现序列化:

1)使用Serializable接口实现序列化

首先我们定义一个对象类User

public class User implements Serializable {    //序列化ID    private static final long serialVersionUID = 1L;    private int age;    private String name;    //getter和setter方法、    //toString方法}

接下来,在Test类中去实现序列化和反序列化。

public class Test {    public static void main(String[] args) throws Exception, IOException {        //SerializeUser();        DeSerializeUser();    }    //序列化方法    private static void SerializeUser() throws FileNotFoundException, IOException {        User user = new User();        user.setName("Java的架构师技术栈");        user.setAge(24);        //序列化对象到文件中        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("G://Test/template"));        oos.writeObject(user);        oos.close();        System.out.println("序列化对象成功");    }    //反序列化方法    private static void DeSerializeUser() throws FileNotFoundException, IOException{        File file = new File("G://Test/template");        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));        User newUser = (User)ois.readObject();        System.out.println("反序列化对象成功"+newUser.toString());    }}

2)使用Externalizable接口实现序列化

首先,定义一个User1类

public class User1 implements Externalizable{    private int age;    private String name;    //getter、setter    //toString方法        public User1() {}        @Override    public void writeExternal(ObjectOutput out) throws IOException {    }    @Override    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {    }}

Externalizable和Serializable接口的区别:

1)Externalizable继承自Serializable接口

2)需要我们重写writeExternal()与readExternal()方法

3)实现Externalizable接口的类必须要提供一个public的无参的构造器。

2、作用:

1)序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输与网络之间;

2)为了解决对象流读写操作时可能引发的问题(如果不进行序列化,可能会存在数据乱序的问题)

3)序列化除了能够实现对象的持久化之外,还能够用于对象的深度克隆

3、序列化的使用场景

1)永久性保存对象,保存对象的字节序列到本地文件或者数据库中;

2)通过序列化以字节流的形式使对象在网络中进行传递和接收;

3)通过序列化在进程间传递对象;

相关文章