zoukankan      html  css  js  c++  java
  • Java中序列化

    定义一个可序列化类:

    /*
    当改变此类的结构时,那么序列化文件中存储的对象就不能使用,原因序列化的UID已经发生改变。
    我们可以设置类的UID,防止对成员修改导致崩溃。
    注意:
    1、序列化是采用一个serialVersionUID来关联类
    2、序列号在反序列化中验证对象的发送者和接受者是否对应。如果不对应,导致InvalidClassException
    3、可序列化类通过声明serialVersionUID字段(必须是static、final、long类型字段)显示声明自己的serialVersionUID
    4、如果未显示声明,则序列化运行时,系统基于该类的成员进行计算该类的serialVersionUID,因此建议显示声明,并且为private
    5、不能序列化静态成员,只能序列化堆内存中的成员。若果要对不是静态成员序列化,可加transient
    */
    import java.io.*;
    class Person implements Serializable
    {
    	private static final long serialVersionUID = 42L;
    	String name;
    	int age;
    	Person(String name,int age)
    	{
    		this.name = name;
    		this.age = age;
    	}
    	public String toString()
    	{
    		return this.name + " ..." + this.age;
    	}
    }
    


    2、测试例类

    /*
    ObjectOutputStream:将Java的基本对象数据类型写入OutputStream,
    */
    import java.io.*;
    import java.lang.Exception;
    class  ObjectDemo
    {
    	public static void main(String[] args)throws Exception
    	{
    		//writeObj();			//出现 某个要序列化的对象不能实现java.io.NotSerializableException异常。查阅api,得知要实现Serializable接口
    								//该接口没有方法,称为标记接口。
    		readObj();
    	}
    
    	public static void readObj()throws Exception
    	{
    		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));		//对应接收
    		Person p = (Person)ois.readObject();
    		System.out.println(p);
    		ois.close();
    
    	}
    	
    
    	//将对象写入到文件中,保存起来
    	public static void writeObj() throws IOException
    	{
    		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt"));
    		oos.writeObject(new Person("lisi",39));
    		oos.close();
    	}
    }
    



  • 相关阅读:
    Android中实现定时器的三种方法 分类: Android 2015-07-14 18:04 11人阅读 评论(0) 收藏
    java构造器内部多态方法
    java继承方法覆盖
    java对象实例化 静态块,对象块,构造函数执行顺序
    Linux 的系统运行级别
    Jmeter启动jmeter-server.bat 报java.io.FileNotFoundException:rmi_keystore.jks 解决方法
    jmeter中JSON Extractors使用
    CentOS6.5下安装jenkins
    day12接口自动化测试框架
    day10 python接口开发、mock接口、网络编程
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258445.html
Copyright © 2011-2022 走看看