【初心者】Java質問・相談スレッド105【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0024デフォルトの名無しさん
2007/08/28(火) 22:21:14transient フィールドはデシリアライズ時には何も代入されない。
コンストラクタも呼ばれない。
初期値が書かれていたとしても、書かれていなかった場合と同じになる。
たとえ transient int x = 3; などと宣言されてても 0 になる。
初期化したければ
private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
in.defaultReadObject();
x = 1;
}
などというメソッドを書く。
private でどこからも呼んでないのに、なぜか呼ばれる不思議メソッド。
■ このスレッドは過去ログ倉庫に格納されています