`
747017186
  • 浏览: 316230 次
社区版块
存档分类
最新评论

java对象的序列化

    博客分类:
  • java
 
阅读更多

Java对象的序列化都必须实现Serializable接口,所谓的序列化就是把对象序列化之后保存在文件里面,比如d:\1.txt里面,它里面保存的是属性。反序列化就是直接读取文件里面的属性。

话不多说,直接看个例子:

import java.io.Serializable;

public class Student implements Serializable{//实现序列化接口
	private static final long serialVersionUID = 1L;//JDK的版本不统一,统一JDK序列化的版本
	private String name;
	private int age;
	
	public Student(String name,int age){
		this.name=name;
		this.age=age;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
}

 测试类:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.OutputStream;


public class Test2 {
	public static void main(String[] args) throws Exception{
		//对象的序列化操作
		Student student=new Student("张三", 20);//实例化对象
		File file=new File("D:\\B.txt");//保存的文件
		OutputStream outputStream=new FileOutputStream(file);//转化为输出流
		ObjectOutputStream objectOutputStream=new ObjectOutputStream(outputStream);//序列化操作流
		objectOutputStream.writeObject(student);//把对象向文件里面写入
		objectOutputStream.close();
		outputStream.close();
		
		//对象的反序列化操作
		InputStream inputStream=new FileInputStream(file);//文件流
		ObjectInputStream objectInputStream=new ObjectInputStream(inputStream);//反序列化操作流
		Student s=(Student) objectInputStream.readObject();//从文件当中读取序列化的对象
		System.out.println(s.getName()+","+s.getAge());//打印出内容
		objectInputStream.close();
		inputStream.close();
	}
}

 其实序列化保存的是对象的属性,读取也是读取的对象的属性,主要是

序列化:ObjectOutputStream

反序列化: ObjectInputStream 

一般对象我们不推荐序列化,因为到目前为止,Serializable接口只是个标识接口,里面没有任何的方法。一旦jdk升级,以前写的代码都要改,很麻烦。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics