java序列化Serializable 学习入门

 

(一)序列化作用:

把内存中的对象转化为另一种形式,以供传输或存储。

(二)序列化前提:

(1)要序列化对象必须是可序列化的,即必须实现 Serializable 接口。

(2)要序列化对象的属性也都是可序列化的。

(3)要序列化对象引用的对象也必须是可序列化的,如:要序列化一个 HashMap 实例,需要把放入到HashMap中的对象也都序列化。

(4)要序列化一个内部类,该内部类必须可序列化,并且外部类也必须可序列化。

(5)基本数据类型都是可以序列化的。

(三)序列化举例:

下面是一个User类,演示了把一个User实例写入文件,然后在再文件中读出。

百度空间代码显示比较差劲,请粘贴到eclipse中运行:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class User implements Serializable{
private static final long serialVersionUID = 1L;

String name; //姓名
int age; //年龄

public User(String name, int age) {//有参构造
   this.name = name;
   this.age = age;
}
  
/**
* @todo 将一个可以序列化的对象写入文件
* @param obj 要保存的对象
* @param fileName 目标文件
*/
public void writeToFile(Object obj, String fileName) {

   try {
    FileOutputStream fos = new FileOutputStream(fileName);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(obj);
    oos.flush();
    System.out.println("write ok");
   } catch (Exception e) {
    e.printStackTrace();
   }
}

/**
* @param fileName 保存对象的文件
* @return 从文件中得到的对象
*/
public Object getObjFromFile(String fileName) {
   Object obj =null;
   try {
    FileInputStream fis = new FileInputStream(fileName);
    ObjectInputStream ois = new ObjectInputStream(fis);
    obj= ois.readObject();   
    System.out.println("read ok");   
   } catch (Exception e) {
    e.printStackTrace();
   }
   return obj;
}


public static void main(String[] args) {
  
   String fileName = "c://user.txt"; //保存对象的文件
   User user = new User("yangzi",28); //创建一个User对象  
   user.writeToFile(user, fileName); //将对象写入文件  
   User u = (User)(user.getObjFromFile(fileName)); //从文件中取得对象
  
     if(u!=null)
     System.out.println("get user from file ok,and name is : "+u.name); //输出对象名
}

}

你可能感兴趣的:(java,exception,String,object,user,HashMap)