站长资讯网
最全最丰富的资讯网站

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)通过序列化在进程间传递对象;

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号