引用
最近一段时间想把集合部分复习下,上午没事情做,读读jdk自带的src,看ArrayList类时,第二条语句难倒了我!
- private transient Object[] elementData;
看看下面的例子,一个登陆时,密码与ID,密码最后没打印,就会明白transient 是干什么了。
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.Date;
- public class LoggingInfo implements java.io.Serializable {
- private static final long serialVersionUID = 1L;
- private Date loggingDate = new Date();
- private String uid;
- private transient String pwd;
- LoggingInfo(String user, String password) {
- uid = user;
- pwd = password;
- }
- public String toString() {
- String password = null;
- if (pwd == null) {
- password = "NOT SET";
- } else {
- password = pwd;
- }
- return "logon info: \n " + "user: " + uid + "\n logging date : "
- + loggingDate.toString() + "\n password: " + password;
- }
- public static void main(String[] args) {
- LoggingInfo logInfo = new LoggingInfo("MIKE", "MECHANICS");
- System.out.println(logInfo.toString());
- try {
- ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream(
- "logInfo.out"));
- o.writeObject(logInfo);
- o.close();
- } catch (Exception e) {// deal with exception
- }
- // To read the object back, we can write
- try {
- ObjectInputStream in = new ObjectInputStream(new FileInputStream(
- "logInfo.out"));
- LoggingInfo logInfo1 = (LoggingInfo) in.readObject();
- System.out.println(logInfo1.toString());
- } catch (Exception e) {// deal with exception
- }
- }
- }
引用
在上面代码中,transient变量的值不会被写入到对象流中,由transient修饰的变量在序列化时不保存状态
打印结果:
logon info:
user: MIKE
logging date : Wed Mar 18 02:43:51 GMT 2009
password: MECHANICS
logon info:
user: MIKE
logging date : Wed Mar 18 02:43:51 GMT 2009
password: NOT SET