|
Java SE 6.0 での JavaBeansTM コンポーネント API の拡張 |
ガイドの索引 |
主な機能
修正されたバグ
@ConstructorProperties 注釈Java SE 6.0 では、注釈対象コンストラクタのパラメータとオブジェクトのプロパティーとの対応関係を示すために、
@ConstructorProperties注釈が導入されました。以前は、コンストラクタDefaultPersistenceDelegate(String[] constructorPropertyNames)が同じ目的で使用されていましたが、これは、ライブラリクラスにとって適切なアプローチではありませんでした。技術的には、読み取り専用プロパティーを含む Bean をコピーするために注釈が使用されます。次のコード例では、
Foodのプロパティーが読み取り専用になっています。public class Food { private final int varieties; private final String country; @ConstructorProperties({"varieties", "country"}) public Point(int varieties, String country) { this.varieties = varieties; this.country = country; } public int getVarieties() { return this.varieties; } public String getCountry() { return this.country; } }
fruitオブジェクトと同じプロパティーを持つvegetableオブジェクトを作成するには、次のコードを使用します。Food fruit = new Food (5, "Argentina"); Food vegetable = new Food (fruit.getVarieties(), fruit.getCountry());この注釈を定義すると、次の 2 つの目標が達成されます。
- 開発者が
DefaultPersistenceDelegateクラスを明示的に使用しないですむようにする。- コンストラクタのパラメータとプロパティーとの関係は記述するが、処理ロジックは記述しない。したがって、この注釈は、長期持続性のような Bean に関係する領域と、JMX のような Bean に関係しない領域のどちらにも適用できます。
6179222:
EventHandlerクラスでNullPointerExceptionエラーが発生する可能性がある
EventHandlerクラスから NPR 例外がスローされていました。EventHandlerクラスのcreateメソッドがnull値をチェックします。Javadoc もそれに応じて修正されています。6204552: EventHandler のドキュメントと例外処理の問題
EventHandlerクラスのeventPropertyName引数のドキュメントで、この引数のサポート内容が明確に説明されていませんでした。eventProperNameプロパティーの機能に関する情報が、createメソッドのドキュメントに含められています。6210265:
EventHandlerクラスはMethodオブジェクトをキャッシュに書き込むべきでないメソッドの検索が改善され、
EventHandlerクラスのフィールドへのメソッドの書き込みが禁止されています。6271692:
EventHandlerクラスのターゲットプロパティーはイベントプロパティーと同じ構文をサポートするべきであるターゲットプロパティーの構文が修正され、任意の数のメソッドまたはプロパティーをサポートするようになりました。これは、"." で各プロパティーまたはメソッドを区切ることによって実現されました。
XMLEncoder クラス 長期持続性プロセスを改善するために行われた修正を、次に示します。
6245149:
java.beans.XMLEncoderクラスがjava.net.URIオブジェクトをエンコードしない
java.net.URIクラスの修飾子 private を持つあるメンバーに、Statementクラスからアクセスできませんでした。JDK 6.0 ではこの問題を解決するために、適切なPersistenceDelegateが提供されています。4921212:
XMLEncoderクラスがHashMapオブジェクト内のnullエントリをエンコードしない
HashMapオブジェクトのKeyエントリが null の場合、そのエントリが XML 出力内に含められていませんでした。この修正では、nullKeyエントリが XML ファイルに含められます。6256805:
XMLEncoderクラスが無効な XML を出力する
XMLEncoderクラスによって XML 出力が生成されるのは、有効な XML 文字に対してだけです。文字要素に新しいcode属性が導入されました。codeには、先頭が "#" の場合は 16 進値が格納されています。そうでない場合、それには 10 進値が格納されています。5015403:
XMLEncoderクラスが列挙を正しくエンコードしない
XMLEncoderクラスによる列挙の直列化が正しく行われていませんでした。新しい持続性委譲であるEnumPersistenceDelegateクラスは、列挙クラスの直列化をサポートするために導入されました。4741757:
XMLEncoderクラスを Java Web Start とともに使用すると、持続性委譲が無視される一部のクラスの
DefaultPersistenceDelegateクラスが正しく作成されていませんでした。その結果、プロパティーのフィールドアクセスを追加して JavaBeans 仕様に違反するハックが、検出されていました。実行された修正により、次のクラスを対象としたハックが削除されました。java.awt.Dimension、java.awt.Point、およびjava.awt.Rectangle。6338070:
read()メソッドが呼び出されないかぎり、XMLDecoderクラスが所有者に対する文を無視する最初、XMLDecoder クラスは遅延初期化を使って作成されていました。この修正により、
readObject()メソッドによってファイルが解析されていなくてもclose()メソッド内での解析が可能となります。6341798: トルコ語ロケールの使用時に
XMLDecoderクラスが失敗するロケールがトルコ語に設定されたマシン上で英語の XML ファイルを読み取る際に、
XMLDecoderクラスが正しく機能しませんでした。このバグを修正するために、toLowerCaseおよびtoUpperCaseメソッドが英語ロケールで呼び出されます。6437265: XML 直列化中にいくつかの
Componentオブジェクトが欠落する
Containerオブジェクトが直列化されていませんでした。この修正により、BorderLayoutを持つコンテナの持続性委譲に特殊な動作が追加されます。
|
Copyright © 1999-2006 Sun Microsystems, Inc. All Rights Reserved. |
|