[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00403] Re: Serializable について



岸田と申します。

私はもっと単純な考え方をしています。

SerializableはJVMが特別扱いする魔法のインタフェースではなく、
ObjectOutpuStreamがシリアル化可否を判断するためのものでしょう。
リフレクションは、privateメンバでも扱えると思っています。
あまり良い方法ではないため、ほとんど使わないのでうろ覚えですが、JUnitで
オブジェクトのprivateメンバの状態をテストする際に使ったこともあります。

J2SDKのObjectOutputStream周辺のソースコードを読んで見てはどうでしょうか。
シリアル化がJavaで如何に実現されるかを知ることができると思います(憶測)。
私はあまり感心が無いので見ていませんが、ObjectOutputStreamはリフレクショ
ンを駆使して、ストリームにオブジェクトを書込むのだと想像しています(憶測)。


Cloneableは、そのオブジェクトのclone()メソッドを安全に呼び出せるかをマー
クするためのものだと思います。マークしなくても、オーバライドさえされてい
ればクローニングは可能だが、それが成功する保障は無いということでしょう。
クローニングサーバではクローニングを安全に行うために、クライアントに
Cloneable実装を要求する場合がほとんどだとは思います。


-- 
Hideki Kishida <kishida@xxxxxxxxxxxx>