您的位置:首页 > 编程语言 > Java开发

Java transient关键字

2014-08-08 09:54 197 查看
一、transient 关键字作用

用来修饰变量,如果一个对象被序列化后,我们想屏蔽掉此对象一个属性使其避免序列化保存时,可以用transient关键字修饰对应的域,则当此对象被序列化时,用transient关键字修饰的成员变量不会被序列化

二、代码示例

package org.jxl.java.basic.io;

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

/**
* @desc transient关键字的说明
* @date 2014年8月6日 下午4:59:04
* @version 1.0
* @author Jin Xueliang
*/
public class TransientObj implements Serializable // 实现序列化接口,以便对象流进行操作
{

/**
*
*/
private static final long serialVersionUID = 1L;
private String p1;
private int p2;
private transient String p3; // 用transient修饰,使此成员变量在序列化时屏蔽掉

public TransientObj(String p1, int p2, String p3)
{
super();
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}

public String getP1()
{
return p1;
}

public void setP1(String p1)
{
this.p1 = p1;
}

public int getP2()
{
return p2;
}

public void setP2(int p2)
{
this.p2 = p2;
}

public String getP3()
{
return p3;
}

public void setP3(String p3)
{
this.p3 = p3;
}

public static void main(String[] args)
{
// 三个成员分别赋值为:p1、12、p3
TransientObj obj = new TransientObj("p1", 12, "p3");
try
{
String file = "/data/test/transient.log";
ObjectOutputStream objectOutputStream = new
ObjectOutputStream(new FileOutputStream(file));

// 对象输出流,操作的对象必须实现 java.io.Serializable 接口
objectOutputStream.writeObject(obj);

objectOutputStream.close();

ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(file));
// 对象输入流,操作的对象必须实现 java.io.Serializable 接口
TransientObj readObj = (TransientObj)inputStream.readObject();

inputStream.close();

System.out.println(readObj.getP1()); // 输出 p1
System.out.println(readObj.getP2()); // 输出 12
System.out.println(readObj.getP3()); // 成员变量p3被transient关键字修饰,则输出为 null,而不是p3,

}catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: