Java之一:Serialization(序列化…
来源:互联网 发布:图片二维码识别软件 编辑:程序博客网 时间:2024/04/18 17:35
本博文主要介绍Java
Java序列化的定义:
Java
Java序列化的实现:
将需要被序列化的类实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,使用其writeObject(Object
Java序列化的特点:
1. 如果某个类能够被串行化,其子类也可以被串行化。
2. 对于父类的处理,如果父类没有实现串行化接口,则其必须有默认的构造函数(即没有参数的构造函数)。否则编译的时候就会报错。在反串行化的时候,默认构造函数会被调用。但是若把父类标记为可以串行化,则在反串行化的时候,其默认构造函数不会被调用。这是因为Java
3. 声明为static和transient类型的成员数据不能被串行化。因为static代表类的状态,
Java序列化的接口:
1. ObjectOutput接口:它继承DataOutput接口并且支持对象的串行化,其内的writeObject()方法实现存储一个对象。
2. ObjectOutputStream类:它继承OutputStream类并且实现ObjectOutput接口。利用该类来实现将对象存储(调用ObjectOutput接口中的writeObject()方法)。
3. ObjectInput接口:它继承DataInput接口并且支持对象的串行化,其内的readObject()方法实现读取一个对象。4. ObjectInputStream类:它继承InputStream类并且实现ObjectInput接口。利用该类来实现读取一个对象(调用ObjectInput接口中的readObject()方法)。
Java的序列化算法
1. 将对象实例相关的类元数据输出。
2. 递归地输出类的超类描述直到不再有超类。
3. 类元数据完了以后,开始从最顶层的超类开始输出对象实例的实际数据值。
4. 从上至下递归输出实例的数据
Java序列化的实例:
User类
import
public
Long
userid = 0L; String
username = null; public
User(Long userid , String username){
this.userid
= userid; this.username
= username; }
}
Write类
import
import
import
import
public
public
static void main(String[] args) throws IOException{
FileOutputStream fos = new FileOutputStream("F:\\test.out");
ObjectOutputStream oos = new ObjectOutputStream(fos);
User u1 = new User(1L,"evan");
User u2 = new User(2L,"evan");
ArrayList u = new ArrayList();
u.add(u1);
u.add(u2);
oos.writeObject(u);//该方法描述了如何进行二进制转化,主要由writeObject0()执行
oos.flush();
oos.close();
}
}
Read类
import
import
import
import
public
public
static void main(String[] args) throws IOException,ClassNotFoundException {
FileInputStream
fis = new FileInputStream("F:\\test.out"); ObjectInputStream
oin = new ObjectInputStream(fis); ArrayList
al = (ArrayList) oin.readObject() ;//该方法描述了如何从二进制解析成对象,主要由ReadObject0()执行for
(User u : al) {
System.out.println(u.userid);
System.out.println(u.username);
}
}
}
执行结果为:
1
evan
2
evan
由于博主知识有限,如有误,请指正点评,欢迎交流
- Java之一:Serialization(序列化…
- Java Serialization 序列化
- java serialization--java序列化
- Java的序列化(Serialization)
- java中的序列化 serialization
- 初探Java序列化(Serialization)
- Java 的序列化 (Serialization)
- Java Serialization/序列化/反序列化
- Java Serialization/序列化/反序列化
- Java对象序列化(Object Serialization)
- Java 的序列化 (Serialization) 教程
- JAVA之序列化(Serialization)的理解
- Java之序列化 (Serialization) 详细教程
- java之序列化Serialization 机制
- Java对象序列化 Object Serialization
- Java 的序列化 (Serialization) 教程
- android-java对象序列化Object serialization
- Thinking in java-39 序列化 Serialization
- RPC/RMI之一:RPC简介
- RPC/RMI之二:XMLRPC
- RPC/RMI之三:JSONRPC
- 分布式系统之二:CAP定理
- 分布式系统之三:CAP定理的实践
- Java之一:Serialization(序列化…
- Java之二:工厂模式
- Java之三:Java类的装载、链接和初始化
- Java之四:类的加载器ClassLoader
- Java之五:Java实例化类的方法
- Java之六:Java Reflection
- 分布式系统之四:间接通信
- 分布式系统之五:进程/线程
- 原来恐慌一场