シリアライズと逆シリアライズをカスタマイズする
writeObject() と readObject() メソッドを実装することで、シリアライズと逆シリアライズのプロセスをカスタマイズすることもできます。一時的なフィールドを処理したり、シリアライズと逆シリアライズ中に追加の処理を行いたい場合に便利です。
private void writeObject(ObjectOutputStream oos) throws IOException {
// デフォルトのシリアライズ
oos.defaultWriteObject();
// ファイルに書き込む前にパスワードを暗号化する
String encryptedPassword = encrypt(password);
oos.writeObject(encryptedPassword);
}
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
// デフォルトの逆シリアライズ
ois.defaultReadObject();
// ファイルから読み取った後にパスワードを復号化する
String encryptedPassword = (String) ois.readObject();
password = decrypt(encryptedPassword);
}