初心者歓迎! Java相談室 その6
■ このスレッドは過去ログ倉庫に格納されています
0770763
NGNGイミュータブルでないオブジェクトの参照をメンバとして抱えているオブジェクトの場合、
シャローコピーだと、コピー先のオブジェクトも同じオブジェクトの参照をメンバでもって
ているのことになるので、コピー元のオブジェクトがそのメンバオブジェクトの内部の値を
書き換えたら、コピー先は知らないうちにいつのまにかそのオブジェクトの内部の値が変更
されてしまっている、ということになりうるわけで、そういうのはちょっとまずい事がある。
そういう時はディープコピーが必要。
>>766
メンバフィールドの修飾子。これがついてると、デフォルトのシリアライザが
シリアライズする時にこの値をストリームに書き込まないし、デシリアライズ時
には読まない。デシリアライズすると、transientフィールドはデフォルトコンス
トラクタ起動によって与えられる値に初期化される。
現在の状態を保存する必要のないフィールドにはこれをつけておくと、バイト
アレイのサイズがそのフィールドのサイズ分だけ減るよ。
それと>>763のやり方は、そのオブジェクト又はメンバに、Serializableでない
オブジェクトがあったら、出来ないね。(まあ、普通データを保存するような
オブジェクトはSerialzableにしとくでしょ?)
■ このスレッドは過去ログ倉庫に格納されています