天天看點

java 序列化 關鍵字_Java transient關鍵字與序列化操作執行個體詳解

本文執行個體講述了Java transient關鍵字與序列化操作。分享給大家供大家參考,具體如下:

一 介紹

transient關鍵字不會進行JVM虛拟機的序列化,但也可以自己進行序列化,要用到下面兩個函數。這兩個函數來自ArrayList源碼,可以分析ArrayList源碼的序列化和反序列化問題。這樣做可以對有效元素進行序列化,不對無效元素進行序列化,以提高網絡傳輸性能。

private void writeObject(java.io.ObjectOutputStream s)throws java.io.IOException

private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException

二 執行個體

package com.imooc.io;

import java.io.Serializable;

public class Student implements Serializable{

private String stuno;

private String stuname;

//該元素不會進行jvm預設的序列化

private transient int stuage;

public Student(String stuno, String stuname, int stuage) {

super();

this.stuno = stuno;

this.stuname = stuname;

this.stuage = stuage;

}

public String getStuno() {

return stuno;

}

public void setStuno(String stuno) {

this.stuno = stuno;

}

public String getStuname() {

return stuname;

}

public void setStuname(String stuname) {

this.stuname = stuname;

}

public int getStuage() {

return stuage;

}

public void setStuage(int stuage) {

this.stuage = stuage;

}

@Override

public String toString() {

return "Student [stuno=" + stuno + ", stuname=" + stuname + ", stuage="

+ stuage + "]";

}

}

package com.imooc.io;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class ObjectSeriaDemo1 {

public static void main(String[] args) throws Exception{

String file = "demo/obj.dat";

//1.對象的序列化

ObjectOutputStream oos = new ObjectOutputStream(

new FileOutputStream(file));

Student stu = new Student("10001", "張三", 20);

oos.writeObject(stu);

oos.flush();

oos.close();

ObjectInputStream ois = new ObjectInputStream(

new FileInputStream(file));

Student stu1 = (Student)ois.readObject();

System.out.println(stu1);

ois.close();

}

}

三 運作結果

Student [stuno=10001, stuname=張三, stuage=0]

希望本文所述對大家java程式設計有所幫助。