量産メモ帳

忘れっぽいのでメモを残しています。

readResolve メソッドについて。

スポンサーリンク

おまけ。
readResolve メソッドというのは、Serializable インタフェースを実装しているクラスであれば、そのメソッドを定義することによって、もしそのクラスのインスタンスが直列化されている場合、それを復元する直前に呼び出されるメソッドのようだ。
readResolve メソッドの修飾子は、上述の小野氏のブログやITアーキテクトの記事では private だが、

private Object readResolve() throws ObjectStreamException {
    // ・・・中略
}

以下の Sun のサイトによれば、何でも良いっぽい。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/serialization/spec/input.doc7.html

Serializable クラスと Externalizable クラスの場合、クラスは readResolve メソッドを使うことによって、呼び出し側に返される前に、ストリームから読み込んだオブジェクトを置換または解釈処理できます。readResolve メソッドを実装することによって、クラスは、クラス自体の直列化復元されているインスタンスの型およびインスタンスを直接制御できます。このメソッドは、次のように定義します。

    ANY-ACCESS-MODIFIER Object readResolve()
        throws ObjectStreamException;))

・・・って書いてみたけど、やっぱ private にしてるのって、オーバーライドを防ぐためなのかな?