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 |