java序列化

java

概念

序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 
序列化分为两大部分:序列化和反序列化。

序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。

反序列化就是打开字节流并重构对象。

特点

如果某个类能够被序列化,其子类也可以被序列化。

声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。

相关的类和接口

在java.io包中提供的涉及对象的串行化的类与接口有:

   ObjectOutput接口、ObjectOutputStream类、ObjectInput接口、ObjectInputStream类。

  • ObjectOutput接口:它继承DataOutput接口并且支持对象的串行化,其内的writeObject()方法实现存储一个对象。
  • ObjectInput接口:它继承DataInput接口并且支持对象的串行化,其内的readObject()方法实现读取一个对象。
  • ObjectOutputStream类:它继承OutputStream类并且实现ObjectOutput接口。利用该类来实现将对象存储(调用ObjectOutput接口中的writeObject()方法)。
  • ObjectInputStream类:它继承InputStream类并且实现ObjectInput接口。利用该类来实现读取一个对象(调用ObjectInput接口中的readObject()方法)。

上代码来一探究竟

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.util.Date;

public class ObjectSerialize {

public static void main(String[] args) throws Exception {

String filePath = "D:\\objectFile.txt";

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(

filePath));

// 序列化对象

Person person = new Person("幻影", 25);

out.writeObject("你好!");

out.writeObject(new Date());

out.writeObject(person);//自定义对象类型

out.writeInt(123); // 写入基本类型数据

out.close();

// 反序列化对象

ObjectInputStream in = new ObjectInputStream(new FileInputStream(

filePath));

System.out.println("obj1=" + (String) in.readObject());

System.out.println("obj2=" + (Date) in.readObject());

Person obj3 = (Person) in.readObject();

System.out.println("obj3=" + obj3);

int obj4 = in.readInt();

System.out.println("obj4=" + obj4);

in.close();

}

}

class Person implements Serializable {

private static final long serialVersionUID = 1L;

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String toString() {

return "name=" + name + ", age=" + age;

}

}

更多资料:https://www.ibm.com/developerworks/cn/java/j-lo-serial/

以上是 java序列化 的全部内容, 来源链接: utcz.com/z/391213.html

回到顶部