Javaキーワード:transient
2046 ワード
JAvaのserializationは、オブジェクトの状態をハードディスクに格納し、必要に応じて読み出す仕組みを提供しています.ただし、オブジェクトステータスを格納する場合、serialization時に特定のオブジェクトデータを格納しない必要がある場合があります.このときtransientキーワードが役に立ちます.クラスの特定のデータドメインをオフにするには、transientキーワードを使用して定義します.これは、最下位のjava仮想マシンにとって、このtransientタイプの変数はクラスの永続的な状態ではありません.
以下はtransientキーワードの実験コードです.
import java.util.; import java.io.;
public class LoggingInfo implements java.io.Serializable { private Date loggingDate = new Date(); private String uid; private transient String pwd;
}
logon info: user: Transient logging date : Tue Apr 03 20:38:30 CST 2018 password: test logon info: user: Transient logging date : Tue Apr 03 20:38:30 CST 2018 password: NOT SET
以下はtransientキーワードの実験コードです.
import java.util.; import java.io.;
public class LoggingInfo implements java.io.Serializable { 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:
" + "user: " + uid + "
logging date : " + loggingDate.toString()
+ "
password: " + password;
}
public static void main(String args[]) {
LoggingInfo logInfo = new LoggingInfo("Transient", "test");
System.out.println(logInfo.toString());
try {
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("logInfo.out"));
o.writeObject(logInfo);
o.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("logInfo.out"));
LoggingInfo logInfo1 = (LoggingInfo) in.readObject();
System.out.println(logInfo1.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
logInfo.out , serialization , , logon info 。
:
logon info: user: Transient logging date : Tue Apr 03 20:38:30 CST 2018 password: test logon info: user: Transient logging date : Tue Apr 03 20:38:30 CST 2018 password: NOT SET
password MECHANICS, NOT SET, serialization , , pwd transient 。