天天看点

transient关键字与对象的属性不被序列化

当某个对象的属性不希望被序列化时,可以使用transient关键字进行声明

import java.io.Serializable ;

public class Person implements Serializable{

private transient String name ; // 声明name属性,但是此属性不被序列化

private int age ; // 声明age属性

public Person(String name,int age){ // 通过构造设置内容

this.name = name ;

this.age = age ;

}

public String toString(){ // 覆写toString()方法

return "姓名:" + this.name + ";年龄:" + this.age ;

}

};

import java.io.File ;

import java.io.IOException ;

import java.io.FileOutputStream ;

import java.io.OutputStream ;

import java.io.ObjectOutputStream ;

import java.io.FileInputStream ;

import java.io.InputStream ;

import java.io.ObjectInputStream ;

public class SerDemo04{

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

ser() ;

dser() ;

}

public static void ser() throws Exception {

File f = new File("D:" + File.separator + "test.txt") ; // 定义保存路径

ObjectOutputStream oos = null ; // 声明对象输出流

OutputStream out = new FileOutputStream(f) ; // 文件输出流

oos = new ObjectOutputStream(out) ;

oos.writeObject(new Person("张三",30)) ; // 保存对象

oos.close() ; // 关闭

}

public static void dser() throws Exception {

File f = new File("D:" + File.separator + "test.txt") ; // 定义保存路径

ObjectInputStream ois = null ; // 声明对象输入流

InputStream input = new FileInputStream(f) ; // 文件输入流

ois = new ObjectInputStream(input) ; // 实例化对象输入流

Object obj = ois.readObject() ; // 读取对象

ois.close() ; // 关闭

System.out.println(obj) ;

}

};

运行结果:

姓名:null;年龄:30