序列化:
就是将一个对象转换为二进制的数据流。这样就可以进行传输,或者保存到文件中。如果一个类的对象要想实现序列化,就必须实现serializable接口。在此接口中没有任何的方法,此接口只是作为一个标识,表示本类的对象具备了序列化的能力而已。
反序列化:将二进制数据流转换成相应的对象。
如果想要完成对象的序列化,则还要依靠ObjectOutputStream和ObjectInputStream,前者属于序列化操作,而后者属于反序列化操作。
package edu.fjut.ser;
import java.io.Serializable;
//具备序列化能力的类
public class Person implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "姓名:"+this.name+"年龄:"+this.age;
}
}
package edu.fjut.ser;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
//使用ObjectOutputStream实现对象的序列化操作
public class ObjectOutputStreamDemo{
public static void main(String []args) throws Exception{
File f=new File("d:"+File.separator+"person.ser");//文件存放位置
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(f));
Person p=new Person("雅各布",22);
oos.writeObject(p);
oos.close();
}
}
package edu.fjut.ser;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
//使用ObjectInputStream实现对象的反序列化操作
public class ObjectInputStreamDemo {
public static void main(String[] args) throws Exception{
File f=new File("d:"+File.separator+"person.ser");
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(f));
Person p=(Person)ois.readObject();
System.out.println(p);
}
}
//如果不希望类中的某个属性被序列化,则可以使用transient关键字声明。
private transient String name;
private transient int age;
package edu.fjut.ser;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
//可以通过对象数组实现多个对象的一起序列化
public class ArraySerDemo {
public static void main(String[] args) throws Exception{
Person []p={new Person("张三",20),new Person("雅各布",27),new Person("阿达",25)};
ser(p);
p=(Person[])dser();
printObj(p);
}
public static void ser(Object object)throws Exception{
File f=new File("d:"+File.separator+"person.ser");
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(f));
oos.writeObject(object);
oos.close();
}
public static Object dser()throws Exception{
File f=new File("d:"+File.separator+"person.ser");
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(f));
return ois.readObject();
}
public static void printObj(Person []person){
for(Person p:person){
System.out.println(p);
}
}
}
分享到:
相关推荐
Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven: <groupId>com.github.xsonorg</groupId> <artifactId>xson-core <version>1.0.1 ...
java对象 java序列化 java反序列化
java 对象的序列化与反序列化 java 对象的序列化与反序列化
主要介绍了Java中对象序列化与反序列化,较为详细的分析了java中对象序列化的概念、原理、实现方法及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下
通过实现 Serializable 接口,Java对象可以被序列化和反序列化。序列化可以将对象转换为字节流,以便于存储或传输。反序列化则可以将字节流重新转换为原始对象。需要注意的是,序列化和反序列化的类必须具有相同的 ...
JAVA对象的序列化与反序列化详细PPT课件.pptx
本篇文章主要介绍了Java 对象序列化和反序列化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。
java 序列化对象 MARSHALLING UNMARSHALLING
把字节序列恢复为Java对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1)把对象的字节序列地保存到硬盘上,通常存放在一个文件中; 2)在网络上传送对象的字节序列。 一、JDK类库...
序列化的过程就是对象写入字节流和从字节流中读取对象。...对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。
对象序列化和反序列化流
这是Java序列化标准规范,对于研究序列化源码能够提供指导作用,为深入研究Java序列技术奠定基础。
对象序列化.ppt 对象序列化.ppt 对象序列化.ppt 对象序列化.ppt 对象序列化.ppt
在java.beans包中,有两个好东西,XMLEncoder和XMLDecoder。从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。本文介绍了这两个可以把JAVA对象序列化保存为XML文件的工具类。
Java对象的序列化与反序列化Java开发Java经验技巧共10页.pdf.zip
对象的序列化和反序列化
Android上的Java对象反序列化
Java对象序列化的秘密
Java对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细...