这是一个java序列化的小例子来说明一下 java中的序列化:有什么不懂的在问我,,,
import java.io.*;
public class SerializableTest{
public static void main(String[] args)
{
try{
//---实例化一个文件的输出流通道 注意:文件的格式必须为.ser格式的。。。。
FileOutputStream filestream = new FileOutputStream("C:/hello.ser");
//---准备输出到这个文件。。。。。
ObjectOutputStream os = new ObjectOutputStream(filestream);
Son son1 = new Son(9,9,9,9);
Son son2 = new Son(333,333,333,333);
Son son3 = new Son(222,222,222,222);
//--开始输出
os.writeObject(son1);
os.writeObject(son2);
os.writeObject(son3);
System.out.println("-------------->文件写入完毕/n-------------->开始修改参数:");
//----------对其类中的各个属性进行修改:
son1.trans = 888;
son1.transInt = 888;
son1.str_0 = "我要修改父类";
son1.staNum = 888;
son1.sonNum = 888;
son1.str_1 = "我要修改子类";
//----关闭流
os.close();
filestream.close();
}catch(Exception ex){
System.out.println(ex);
}
//*****************************************-************************************************
//----------------从生成的.ser文件中读取存入的数据-----------------------------------------------------------
try{
//--建立连接通道
FileInputStream inputStream = new FileInputStream("C:/hello.ser");
//--准备读取数据
ObjectInputStream is = new ObjectInputStream(inputStream);
Son sonOne = (Son)is.readObject();
Son sonTwo = (Son)is.readObject();
Son sonThree = (Son)is.readObject();
//---------打印相关的信息---------
System.out.println("父类的变量 (transient static int trans = 11)---"+sonOne.trans+" "+sonTwo.trans+" "+sonThree.trans);
System.out.println("父类的变量(transient int transInt = 11;)---"+sonOne.transInt+" "+sonTwo.transInt+" "+sonThree.transInt);
System.out.println("父类的字符串(String str_0)--"+sonOne.str_0+" "+sonTwo.str_0+" "+sonThree.str_0);
System.out.println("/n----------------------------------------------------/n");
System.out.println("子类的变量(static int staNum = 11)---"+sonOne.staNum+" "+sonTwo.staNum+" "+sonThree.staNum);
System.out.println("子类的变量(int sonNum = 11)---"+sonOne.sonNum+" "+sonTwo.sonNum+" "+sonThree.sonNum);
System.out.println("子类的字符串(String str_1)---"+sonOne.str_1+" "+sonTwo.str_1+" "+sonThree.str_1);
System.out.println("/n=======================================================/n");
System.out.println("通过以上信息:第一:说明也可以序列化父类");
System.out.println("第二:说明 序列化文件,在保存的时候。各自保存住每个对象的信息,,在第二次保存的时候 ,,在原来的基础之上,,保存,,并不覆盖原来的信息。。。。");
System.out.println("第三:说明 用static标记声明的属性 ,,不被序列化哦(不受序列化影响。) 哈哈");
System.out.println("第四:说明 用关键字:transient 标记的,在对象被序列化时,,跳过,,,保存系统对属性的的默认值....不允许被修改,(int 类型的默认是 “ 0 ”)");
}catch(Exception ex){
System.out.println(ex);
}
}
}
//---要序列的对象必须实现Serializable这个接口哦。。。
class Father implements Serializable{
transient static int trans = 11;
transient int transInt = 11;
String str_0 = "我是(原来的)【父类】属性";
}
//----我是子类哦---------------
class Son extends Father implements Serializable{
static int staNum = 11;
int sonNum = 11;
String str_1 = "我是(原来的)【子类】属性";
//-----构造方法修改参数---
public Son(int i_0,int i_1,int i_2,int i_3){
//--对父类的变量进行修改
trans = i_0;
transInt = i_1;
str_0 = "我是===修改后的===父类===属性";
//--修改子类的变量
staNum = i_2;
str_1 = "我是==修改后的==子类===属性";
sonNum = i_3;
}
}
下面的是运行结果: