Java 

J2SETM 5.0 での
直列化の変更と拡張

ドキュメントの目次
ここでは、Java 2 Platform Standard Edition 5.0 の直列化の拡張機能について説明します。以前のリリースで拡張された機能についての概要は「以前のリリースでの拡張機能」を参照してください。
列挙型インスタンスの直列化のサポート
列挙型の処理が直列化に追加されました。これは、バージョン 5.0 での新機能です。enum インスタンスを直列化する規則は、通常の直列化可能なオブジェクトを直列化する規則と異なります。enum インスタンスの直列化は、その enum 定数名と、その基になっている enum 型を識別する情報とだけで構成されています。同様に、直列化復元の動作も異なります。クラス情報は適切な enum クラスを見つけるために使用されます。そのクラスと受け取った定数名を使用して Enum.valueOf メソッドが呼び出され、enum 定数を取得して返します。

バグの修正: java.lang.ClassNotFoundException のため java.io.StreamCorruptedException がスローされる
バージョン 1.4.0 のリリースから、ObjectInputStream.readClassDescriptor メソッドによってスローされる ClassNotFoundException は、StreamCorruptedException として ObjectInputStream.readObject のトップレベルの呼び出し側に反映され、その原因は空であることだとされました。本バージョンから InvalidClassException としてトップレベルの呼び出し側に反映されるようになりました。また、その原因は元の ClassNotFoundException となります。

バグの修正: [sic] からの通知を java.io.ObjectStreamClass$EntryFuture で待機するスレッド
バージョン 1.4.0 から、ObjectStreamClass.lookup メソッドの Class 引数で表されるクラスの静的初期化子内で、このメソッドが呼び出された場合にデッドロックする可能性がありましたが、デッドロックが発生することはなくなりました。

バグの修正: serialVersionUID の仕様なし
Serializable インタフェースの javadoc が拡張されました。これにより、serialVersionUID の役割と使用方法がさらに詳細に指定できるようになり、また、直列化可能なクラスの serialVersionUID を明示的に指定する必要性が明確となりました。

Copyright © 2004 Sun Microsystems, Inc.All Rights Reserved. 
コメントの送付先: rmi-comments@java.sun.com 
Sun