对象序列化:就是将一个对象转换为二进制的数据流,如果一个类的对象要想实现对象序列化,则对象所在的类必须实现Serializable接口。在此接口中没有任何的方法,此接口只是作为 一个标识,表示本类的对象具备了序列化的能力而已。
如果要想完成对象的序列化,则还要依靠ObjectOutputStream 类和 ObjectInputStream类,前者属于序列化操作,而后者属于反序列化操作
package org.serializabledemo;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Person implements Serializable {
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "姓名:"+this.name+";"+"年龄:"+this.age;
}
}
下面使用ObjectOutputStream 完成序列化的操作,对象被序列化之后,就可以通过ObjectInputStream 进行反序列化的操作
package org.serializabledemo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerializableDemo {
/**
* @param args
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
Person per = new Person("张三",30);
File file = new File ("d:\\1.txt");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(per);
oos.close();
ObjectInputStream ois = new ObjectInputStream (new FileInputStream(file));
Person per1 = (Person)ois.readObject();
ois.close();
System.out.println(per1);
}
}
以上的操作实际上是将整个的对象进行了序列化的操作,如果现在假设类中的某个属性不希望被序列化的话,则要使用transient关键字声明
package org.serializabledemo;
import java.io.Serializable;
@SuppressWarnings("serial")
public class PersonTransient implements Serializable {
private transient String name;
private transient int age;
public PersonTransient(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "姓名:"+this.name+";"+"年龄:"+this.age;
}
}
对多个对象进行序列化的操作 使用数组
package org.serializabledemo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerializableArrayDemo {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void Ser(Object obj) throws Exception{
File file = new File ("d:\\1.txt");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(obj);
oos.close();
}
public static Object DSer(Object obj) throws Exception{
File file = new File ("d:\\1.txt");
ObjectInputStream ois = new ObjectInputStream (new FileInputStream(file));
Object obj_new = ois.readObject();
ois.close();
return obj_new;
}
public static void print(Person[] per){
for (Person p:per){
System.out.println(p);
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Person per[] = {new Person("张三",30),new Person("王五",20),new Person("赵六",50)};
SerializableArrayDemo.Ser(per);
Person per_new[] = (Person[])SerializableArrayDemo.DSer(per);
SerializableArrayDemo.print(per_new);
}
}
分享到:
相关推荐
Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven: <groupId>com.github.xsonorg</groupId> <artifactId>xson-core <version>1.0.1 ...
java 序列化对象 MARSHALLING UNMARSHALLING
在java.beans包中,有两个好东西,XMLEncoder和XMLDecoder。从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。本文介绍了这两个可以把JAVA对象序列化保存为XML文件的工具类。
序列化的过程就是对象写入字节流和从字节流中读取对象。...对象序列化功能非常简单、强大,在RMI、Socket、JMS、EJB都有应用。对象序列化问题在网络编程中并不是最激动人心的课题,但却相当重要,具有许多实用意义。
这是Java序列化标准规范,对于研究序列化源码能够提供指导作用,为深入研究Java序列技术奠定基础。
Java对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细解析.docJava对象序列化详细...
Java对象序列化,提供介绍,仅供参考,希望能帮助到学习的人!
NULL 博文链接:https://pxchen.iteye.com/blog/701552
一个java 对象序列化的测试程序 . 。
java对象 java序列化 java反序列化
Java对象序列化的秘密
本文介绍了Java对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和技术所需要的全部信息。这篇文章侧重于可以用来生成 Java对象以数据为中心的视图的技术。演示可以把 JavaBeans变成XML文档的各种方法,...
对象序列化.ppt 对象序列化.ppt 对象序列化.ppt 对象序列化.ppt 对象序列化.ppt
关于Java对象序列化您不知道的5件事Java开发Java经验技巧共11页.pdf.zip
将Java对象序列化成ISO-8859-1、Base64字节流和Xml字符串三种方式。
java 对象的序列化与反序列化 java 对象的序列化与反序列化
主要介绍了java对象序列化与反序列化的默认格式和json格式使用示例,需要的朋友可以参考下
Java对象序列化详细解析[参考].pdf
所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过...像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的信息 2 Java内建支持,易于实现,只需实现该接口即可,无须任何...