[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 13123] Re: 「 Effective Java( 第 2 版) 」を読む会第8回議事録です
続きです。
"TAKAHASHI, Tomohiro" wrote:
> > 項目75 カスタムシリアライズ形式の使用を検討する
> > serialverの計算負荷は? フィールドやメソッドがたくさんある場合はどうなるのか
>
> クラスで、serialVersionUIDが定義されていない場合の、余分なコストがどの程度の
> ものなのか、あとで試してみます。ちょうど合宿でRMIを試して、最近のJavaだとRMIの
> 実装がとても簡単なので、良い機会だと思いました。
明示的な定義の有無では、特に大きな速度的な違いは見いだせませんでした。
で、
java.io.ObjectStreamClass
の
public long getSerialVersionUID()メソッド
が利用されているようで、このメソッド内から
静的なprivate static long computeDefaultSUID(Class cl)メソッド
が呼び出されています。
Classごとに一度計算した値をキャッシュして保持しています。
試しに、
import java.io.*;
ObjectStreamClass osc = ObjectStreamClass.lookup(MySerializableClass.class);
long suid = osc.getSerialVersionUID();
System.out.println(suid);
というコードを実行すると、計算された値が返されました。
--
高橋智宏