Java中的Serialization机制和transient关键字

下面这两篇文章讲得特别明白,简单的说,就是Serialization机制是 指把类或者基本的数据类型持久化(persistence)到数据流(Stream)中,包括文件、字节流、网络数据流。 
JAVA中实现serialization主要靠两个类:ObjectOuputStream和ObjectInputStream。他们是JAVA IO系统里的OutputStream和InputStream的子类。既然他们是JAVA IO中的流,那么就可以像操作一般的流一样来操作他们。

Java的Serialization机制
http://zzy1943.iteye.com/blog/634418
Java的关键字transient
http://blog.csdn.net/flynetcn/article/details/2142020

这里有一段详细的代码,我还添加了一点点注释便于理解:

import java.io.*; 
import java.util.*; 

public class Logon implements Serializable { 
private static final long serialVersionUID = 1L;
private Date date = new Date(); 
private String username; 
private transient String password;
Logon(String name, String pwd) { 
username = name; 
password = pwd; 
}
public String toString() { 
String pwd = (password == null) ? "(n/a)" : password; 
return "logon info: \n " + 
"username: " + username + 
"\n date: " + date.toString() + 
"\n password: " + pwd; 
}
public static void main(String[] args) { 
Logon a = new Logon("Hulk", "myLittlePony");
System.out.println( "logon a = " + a); 
try { 
ObjectOutputStream o = new ObjectOutputStream( new FileOutputStream("Logon.out")); 
o.writeObject(a); 
o.close(); 
// Delay: 
int seconds = 5; 
long t = System.currentTimeMillis() + seconds * 1000; 
while(System.currentTimeMillis() < t); 
// Now get them back: 
ObjectInputStream in = new ObjectInputStream( new FileInputStream("Logon.out")); 
System.out.println( "Recovering object at " + new Date()); 
a = (Logon)in.readObject(); 
System.out.println( "logon a = " + a); 
} catch(Exception e) { 
e.printStackTrace(); 

你可能感兴趣的:(java,object)