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. |