目次 | 前の項目 | 次の項目 | Java オブジェクト直列化仕様 |
2001 年 8 月 16 日 JavaTM 2 SDK, Standard Edition, v1.4 Beta 2 での変更
- クラス定義メソッド
readObjectNoData
のサポートを追加しました。これは、クラス定義メソッド readObject で対応できない場合に直列化可能クラスのフィールドを初期化するために使用します。「3.5 readObjectNoData メソッド」および付録 A「オブジェクト直列化におけるセキュリティ」を参照してください。- 新しいメソッド
ObjectOutputStream.writeUnshared
およびObjectInputStream.readUnshared
は、直列化復元されたオブジェクトへの一意参照を保証する機構を提供します。「2.1 ObjectOutputStream クラス」、「3.1 ObjectInputStream クラス」、および付録 A「オブジェクト直列化におけるセキュリティ」を参照してください。ObjectOutputStream
およびObjectInputStream
の単一引数コンストラクタにおける新しいセキュリティチェックを文書化しました。「2.1 ObjectOutputStream クラス」および「3.1 ObjectInputStream クラス」を参照してください。- 「1.10 Serializable インタフェース」に、直列化での内部クラスの使用に対する警告を追加しました。
- クラス定義の
writeObject
メソッドは、任意指定のデータを書き込む前にObjectOutputStream.defaultWriteObject
またはwriteFields
を一度呼び出す必要があること、およびクラス定義のreadObject
メソッドは、任意指定のデータを読み込む前にObjectInputStream.defaultReadObject
またはreadFields
を一度呼び出す必要があることを明示しました。「2.3 writeObject メソッド」および「3.4 readObject メソッド」を参照してください。- クラス定義の
readObject
メソッドまたはreadExternal
メソッドが利用可能なデータの範囲を超える読み取り操作を試行したときのObjectInputStream
の動作を明示しました。「3.4 readObject メソッド」および「3.6 readExternal メソッド」を参照してください。- 「フィールド記述子」形式で書き込まれる必要がある非プロキシクラス記述子フィールド型の文字列の説明を明示しました。「6.2 ストリーム要素」を参照してください。
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.7 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 バージョンの概念を導入しました。ローカルの仮想マシン内で
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 クラス」を参照してください。