对象实例化
所谓的对象序列化指的是将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或者是网络传输。
、
@SuppressWarnings("serial")
class Person implements Serializable { // Person类可以被序列化
private String name ;
private int age ;
public Person(String name,int age) {
this.name = name ;
this.age = age ;
}
// setter、getter略
@Override
public String toString() {
return "姓名:" + this.name + "、年龄:" + this.age ;
}
}
//此时的Person类产生的每一个对象都可以实现二进制的数据传输,属于可以被实例化的程序类。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class JavaAPIDemo {
private static final File SAVE_FILE = new File("D:" + File.separator + "mldn.person") ;
public static void main(String[] args) throws Exception {
// saveObject(new Person("小喷嚏",78)) ;
System.out.println(loadObject());
}
public static void saveObject(Object obj) throws Exception {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(SAVE_FILE)) ;
oos.writeObject(obj); // 序列化
oos.close();
}
public static Object loadObject() throws Exception {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(SAVE_FILE)) ;
Object obj = ois.readObject() ; // 反序列化
ois.close();
return obj ;
}
}
@SuppressWarnings("serial")
class Person implements Serializable { // Person类可以被序列化
private String name ;
private int age ;
public Person(String name,int age) {
this.name = name ;
this.age = age ;
}
// setter、getter略
@Override
public String toString() {
return "姓名:" + this.name + "、年龄:" + this.age ;
}
}
在Java中的对象序列化于反序列化必须使用内部提供的对象操作流,因为这里涉及到二进制数据的格式,所以不能够自定义处理,另外如果要想实现一组对象的序列化,则使用对象数组完成。
假设类之中有一些是需要计算保存的属性内容往往是不需要被序列化,这个时候可以使用transient。
JavaIO编程案例: