transient

参考网址:https://blog.csdn.net/u010188178/article/details/83581506

如果transient声明一个实例变量,当对象存储时,它的值不需要维持。读取流类的,文件类的。

transient关键字标记的成员变量不参与序列化过程。

Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。
 

TransientTest.java:

输出为:

序列化前:TransientTest.toString(): name1=常规属性,name2=transient修饰的属性
序列化后:TransientTest.toString(): name1=常规属性,name2=null
 



import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class TransientTest implements Serializable{
	private static final long serialVersionUID = 233858934995755239L;
	private String name1;
	private transient String name2;
	
	public TransientTest(String name1,String name2){
		this.name1 = name1;
		this.name2 = name2;
	}
	public String toString(){
		return String.format("TransientTest.toString(): name1=%s,name2=%s", name1,name2);
	}
	public static void testTransient(){
		String name1="常规属性",name2="transient修饰的属性";
		TransientTest test = new TransientTest(name1, name2);
		System.out.println("序列化前:"+test.toString());
		ObjectOutputStream outStream;
		ObjectInputStream inStream;
		String filePath = "C:/test/TransientTest.obj";
		try {
			outStream = new ObjectOutputStream(new FileOutputStream(filePath));
			outStream.writeObject(test);
			
			inStream = new ObjectInputStream(new FileInputStream(filePath));
			TransientTest readObject = (TransientTest)inStream.readObject();
			System.out.println("序列化后:"+readObject.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		testTransient();
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值