[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);
というコードを実行すると、計算された値が返されました。
 
--
高橋智宏