Я знаю, что могу использовать необработанные типы для написания XMLAdapter, но могу ли я использовать общие типы. Я пробовал читать API ( ссылка ), но даже не заметил намека на это.
Я хочу использовать, что-то вроде:
@XmlJavaTypeAdapter(GenericMapAdapter.class)//
private final HashMap depWageSum = //
new HashMap();
чтобы получить
289.001
499.817
41.824
...
И сам класс, вероятно, будет выглядеть примерно так:
@SuppressWarnings("serial") public class GenericMapAdapter extends XmlAdapter, Map> {
public static class MapType {
@XmlValue protected final List> entry = new ArrayList>();
public static class MapTypeEntry {
@XmlAttribute protected K key;
@XmlValue protected V value;
private MapTypeEntry() {};
public static MapTypeEntry of(final K k, final V v) {
return new MapTypeEntry() {{this.key = k; this.value = v;}};
} } }
@Override public Map unmarshal(final GenericMapAdapter.MapType v) throws Exception {
return new HashMap() {{ for (GenericMapAdapter.MapType.MapTypeEntry myEntryType : v.entry)
this.put(myEntryType.key, myEntryType.value);}};
}
@Override public MapType marshal(final Map v) throws Exception {
return new GenericMapAdapter.MapType() {{for (K key : v.keySet())
this.entry.add(MapTypeEntry.of(key, v.get(key)));}};
} }