目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
1999 年 7 月 30 日 JavaTM 2 SDK, Standard Edition, v1.3 Beta での変更
- UTF エンコーディングで 65535 バイトを超える長さの
String
オブジェクトを記述する機能が追加されました。「6.2 ストリーム要素」を参照してください。- 新しいメソッドである
ObjectOutputStream.writeClassDescriptor
およびObjectInputStream.readClassDescriptor
を使って、ObjectStreamClass
クラス記述子の直列化表現をカスタマイズできます。「2.1 ObjectOutputStream クラス」および「3.1 ObjectInputStream クラス」を参照してください。- 付録 A「オブジェクト直列化におけるセキュリティ」に説明が追加されました。
1998 年 9 月 30 日 JDKTM 1.2 Beta4 RC1 での変更
1998 年 6 月 22 日 JDKTM 1.2 Beta4 での変更
- JDKTM 1.2
java.io
インタフェースのReplaceable
およびResolvable
を削除しました。インタフェースとしてのこれらのクラスへの参照は、java.io.Serializable
に置き換える必要があります。直列化可能クラスがwriteReplace
およびreadResolve
メソッドを定義する場合は、直列化ではリフレクションを使ってこれらのメソッドを呼び出します。「2.5 writeReplace メソッド」 および 「3.6 readResolve メソッド」を参照してください。- 新しい javadoc タグ @serial、@serialField および @serialData で、Serializable クラスの直列化されたフォームを文書化する手段を提供します。javadoc は、これらのタグの内容を基にして直列化の仕様を生成します。「1.6 クラスの直列化可能なフィールドおよびデータの文書化」を参照してください。
- 特別な Serializable クラスメンバ
serialPersistentFields
では、private を宣言しなければなりません。「1.5 クラスの直列化可能なフィールドの定義」を参照してください。serialVersionUID
の算出に関連する手順については、「4.6 ストリーム固有識別子」で明示しました。
1998 年 2 月 6 日 JDKTM 1.2 Beta 3 での変更
- STREAM_PROTOCOL バージョンの概念を導入しました。ローカルの Virtual Machine 内で
Externalizable
オブジェクトのクラスが利用できない場合でも、ストリーム内のExternalizable
オブジェクトを使ってスキップを可能にするExternalizable
オブジェクトの新しい形式を示すため、STREAM_PROTOCOL_2
バージョンを追加しました。互換性の問題については、「6.3 ストリームプロトコルのバージョン」を参照してください。ObjectInputStream.resolveClass
メソッドは、ストリーム内のクラス名とは別のパッケージのローカルクラスを返すことができます。この機能により、 リリース間でパッケージ名を変えることができます。serialVersionUID
および基底クラス名は、ストリーム内とクラスのローカルバージョン内で同じである必要があります。「3.1 ObjectInputStream クラス」を参照してください。- ストリームへの書き込み、またはストリームからの読み込み時に、
String
またはarray
オブジェクトの置換が可能となります。「2.1 ObjectOutputStream クラス」および「3.1 ObjectInputStream クラス」を参照してください。
1997 年 9 月 4 日 JDKTM 1.2 Beta1 での変更
- Replaceable インタフェースを、Replaceable および Resolvable の 2 つのインタフェースに分割しました。Replaceable インタフェースにより、オブジェクトをストリームに直列化する直前に、クラスが自らの置換を指定することができま す。Resolvable インタフェースにより、ストリームからオブジェクトを読み込むときに、クラスが自らの置換を指定することができま す。
- 直列化で、JDKTM 1.2 セキュリティモデルを使うように修正しました。
ObjectInputStream.enableReplace
およびObjectOutputStream.enableResolve
メソッド内で SerializablePermission "enableSubstitution" のチェックがあります。 「2.1 ObjectOutputStream クラス」および「3.1 ObjectInputStream クラス」を参照してください。- 処理された IOException がストリームに書き込まれるように、
writeObject
の例外ハンドラを変更します。「2.1 ObjectOutputStream クラス」を参照してください。
1997 年 7 月 3 日 JDKTM 1.2 Alpha での変更
- クラスの直列化状態を指定するための要件を文書化しました。「1.5 クラスの直列化可能なフィールドの指定」を参照してください。
- クラスの直列化されたフィールドにクラスがさらに柔軟にアクセスできるように、直列化可能フィールド API を追加しました。ストリームのプロトコルは変更されていません。「1.7 クラスの直列化可能フィールドへのアクセス」、「2.2 ObjectOutputStream.PutField クラス」、および「3.2 ObjectInputStream.GetField クラス」を参照してください。
- フィールド記述子およびデータの、ストリームへの書き込みおよびストリームからの読み込みが、標準順序で 行われることを明示しました。「4.1 ObjectStreamClass クラス」を参照してください。