版权声明
1. 本站文章和资源均来自互联网收集和整理,本站不承担任何责任及版权问题。
2. 相关版权归作者及其公司所有,仅供学习研究用途,请勿用于商业目的。
3. 若侵犯您的版权,请发邮件至webmaster@ishare1.cn联系我们,我们确认后将立即删除。

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)通过序列化在进程间传递对象;
更多java知识请关注java基础教程栏目。
爱分享




