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;
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   。