BoundType - JAXBが処理方法を知らない型。 ValueTypeを介してこの型をメモリー内表現として使用できるようにアダプタは記述される。 ValueType - JAXBが初めから処理方法を知っている型。public abstract class XmlAdapter<ValueType,BoundType> extends Object
使用法:
一部のJava型、たとえば、HashMapまたはその他の非JavaBeanクラスなどは、そのままではXML表現にマップされません。 反対に、XML表現はJava型にマップ可能ですが、アプリケーションが別のJava型を使用してそのXML表現にアクセスすることを選択する場合もあります。 たとえば、スキーマからJavaへのバインディング規則では、デフォルトでxs:dateTimeがXmlGregorianCalendarにバインドされます。 しかし、アプリケーションがxs:dateTimeをカスタム型、たとえば、MyXmlGregorianCalendarにバインドすることを望む場合もあります。 いずれの場合でも、アプリケーションがXMLコンテンツにアクセスするときに使用するバウンド型と、XML表現へとマップされる値型の間に不一致が存在します。
このabstractクラスは、バウンド型を値型に、またはその逆に適応させるためのメソッドを定義しています。 整列化および非整列化の実行中に、これらのメソッドはJAXBバインディング・フレームワークによって呼び出されます。
XmlJavaTypeAdapterを使用してアダプタを組み込みます。 例: HashMapのカスタマイズ・マッピング
次の例は、@XmlAdapterと@XmlJavaTypeAdapterを使用してHashMapのマッピングをカスタマイズする方法を示します。
ステップ1: HashMapに対する適切なXML表現を決定します。
     <hashmap>
         <entry key="id123">this is a value</entry>
         <entry key="id312">this is another value</entry>
         ...
       </hashmap>
 
 ステップ2: 上記のXML表現が従うべきスキーマ定義を決定します。
     <xs:complexType name="myHashMapType">
       <xs:sequence>
         <xs:element name="entry" type="myHashMapEntryType"
                        minOccurs = "0" maxOccurs="unbounded"/>
       </xs:sequence>
     </xs:complexType>
     <xs:complexType name="myHashMapEntryType">
       <xs:simpleContent>
         <xs:extension base="xs:string">
           <xs:attribute name="key" type="xs:int"/>
         </xs:extension>
       </xs:simpleContent>
     </xs:complexType>
 
 ステップ3: 上記のスキーマ定義を生成可能である値型を記述します。
     public class MyHashMapType {
         List<MyHashMapEntryType> entry;
     }
     public class MyHashMapEntryType {
         @XmlAttribute
         public Integer key;
         @XmlValue
         public String value;
     }
 
 ステップ4: 値型MyHashMapTypeを、バウンド型HashMapに適応させるアダプタを記述します。これはアプリケーションによって使用されます。
     public final class MyHashMapAdapter extends
                        XmlAdapter<MyHashMapType,HashMap> { ... }
 
 ステップ5: アダプタを使用します。
     public class Foo {
         @XmlJavaTypeAdapter(MyHashMapAdapter.class)
         HashMap hashmap;
         ...
     }
 
 上記のコード・フラグメントは、次のスキーマにマップします。
 
     <xs:complexType name="Foo">
       <xs:sequence>
         <xs:element name="hashmap" type="myHashMapType"
       </xs:sequence>
     </xs:complexType>
 XmlJavaTypeAdapter| 修飾子 | コンストラクタ | 説明 | 
|---|---|---|
| protected  | XmlAdapter() | 派生クラス用の何も実行しないコンストラクタです。 | 
public abstract BoundType unmarshal(ValueType v) throws Exception
v - 変換する値。 nullも可。 Exception - 変換中にエラーが発生した場合。 呼出し側はValidationEventHandlerを介して、このエラーをユーザーに報告する。 public abstract ValueType marshal(BoundType v) throws Exception
v - 変換する値。 nullも可。 Exception - 変換中にエラーが発生した場合。 呼出し側はValidationEventHandlerを介して、このエラーをユーザーに報告する。  バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。 
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved.  Use is subject to license terms.  Documentation Redistribution Policyも参照してください。