6.9 javax.xml.datatypeパッケージに関する注意事項

javax.xml.datatypeパッケージに関する注意事項を次の表に示します。

表6-19 javax.xml.datatypeパッケージに関する注意事項

項番注意事項
1マルチスレッドプログラミングをする場合,javax.xml.datatypeパッケージで規定されたオブジェクトはスレッドセーフではありません。したがって,各スレッドは排他的にこれらのオブジェクトにアクセスするようにしてください。
2DatatypeFactoryクラスの各メソッドでIllegalArgumentExceptionが発生したとき,getMessage()メソッドでは,各メソッドに指定したパラメタが戻ります。
3DatatypeFactoryクラスのnewXMLGregorianCalendarメソッド,newXMLGregorianCalendarDateメソッド,newXMLGregorianCalendarTimeメソッドで,月を表すフィールドに4,6,9,11のどれかを設定したとき,日を表すフィールドに31を設定してもエラーが発生しません。
4DatatypeFactoryクラスのnewXMLGregorianCalendarメソッドおよびnewXMLGregorianCalendarTimeメソッドの引数millisecondには,0から999までの値を指定してください。
5月を表すフィールドが1のDurationオブジェクトと,日を表すフィールドが28のDurationオブジェクトを比較したとき,結果は次のようになります。
  • compareメソッドで比較したときは,DatatypeConstants.EQUALが戻ります。
  • equalsメソッドで比較したときは,trueが戻ります。
6DatatypeFactoryクラスのnewDuration(long durationInMilliSeconds)メソッド,newDurationDayTime(long durationInMilliSeconds)メソッド,またはnewDurationYearMonth(long durationInMilliSeconds)メソッドで作成したDurationオブジェクトは,DatatypeConstants.DURATION_DAYTIME型になります。したがって,このDurationオブジェクトの月を表すフィールド,日を表すフィールドの値は0になります。
7XMLGregorianCalendarクラスのsetHourメソッド,およびsetTimeメソッドの引数hourには,0から23までの値を指定してください。また,DatatypeFactoryクラスのnewXMLGregorianCalendarメソッド,newXMLGregorianCalendarTimeメソッドの引数の「時間を表すフィールド」には,0から23までの値を指定してください。
8JAXP1.4仕様書では,XMLGregorianCalendarクラスのisValidメソッドは「Validate instance by getXMLSchemaType() constraints.」と定義されています。XML Processorでは,次の制約をすべて満たしているときにtrueを返します。
  • 月を表すフィールドが2のとき,日を表すフィールドが28以内(うるう年以外の場合),または29以内(うるう年の場合)である。
  • 年を表すフィールドが0ではない。
9XMLGregorianCalendarクラスのequalsメソッドの引数がnullのとき,NullPointerException例外は発生せずにfalseが戻ります。
10DatatypeConstants.GMONTH型のXMLGregorianCalendarオブジェクトにtoString, toXMLFormatメソッドを適用して得られる字句表現は,W3C XML Schema 1.0 Part 2(second edition)仕様書のセクション3.2.14で規定された文字列「--MM」ではなく,second editionより前の仕様書で規定された文字列「--MM--」になります。