EclipseのserialVersionUIDの警告はなんでデフォルトでONなのか?

かなり古い話題ですが。。。


http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/Serializable.html

直列化可能クラスが明示的に serialVersionUID を宣言しない場合、直列化ランタイムは、『Java(TM) Object Serialization Specification』に記述されているように、さまざまな局面に基づいて、そのクラスのデフォルトの serialVersionUID 値を計算します。しかし、デフォルトの serialVersionUID の計算は、クラスの詳細情報に大きく左右され、このクラスの詳細情報はさらに、コンパイラの実装状況に依存しているので、直列化復元時に予期しない InvalidClassException が発生する可能性があります。このような問題を防ぐためにも、すべての直列化可能クラスが serialVersionUID 値を明示的に宣言するように設定することを強くお勧めします。

SerializableなクラスはserialVersionUID をつけないとあかん!とAPIドキュメントでうたわれてます。

でもさー"デフォルトはOFF"でもよかったかなーと思う。だって、この問題で困る可能性のある人って、作ったアプリケーションを公開したり売ったりするような人たちでしょ。んなもん、自分でONにするだろ。困るのは、初心者がそういう仕事についちゃったときとかの話じゃん。

わかった!「こういう問題がありますと啓蒙する目的」でデフォルトがONなんだな。


http://www-03.ibm.com/developerworks/blogs/page/woolf?entry=serial_version_uid_and_eclipse
http://c2.com/cgi/wiki?AlwaysDeclareSerialVersionUid
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/Serializable.html