java - Can generic XmlAdapter be written -
i know, can use raw types write xmladapter, can use generic types. tried reading api ( link ), did not notice clue this.
for example map:
i want use, like:
@xmljavatypeadapter(genericmapadapter<string, double>.class)// private final hashmap<string, double> depwagesum = // new hashmap<string, double>(); to get
<depwagesum> <entry key="ri">289.001</entry> <entry key="vt">499.817</entry> <entry key="hi">41.824</entry> ... <depwagesum> and class in lines of:
@suppresswarnings("serial") public class genericmapadapter<k, v> extends xmladapter<genericmapadapter.maptype<k, v>, map<k, v>> { public static class maptype<k, v> { @xmlvalue protected final list<maptypeentry<k, v>> entry = new arraylist<maptypeentry<k, v>>(); public static class maptypeentry<k, v> { @xmlattribute protected k key; @xmlvalue protected v value; private maptypeentry() {}; public static <k, v> maptypeentry<k, v> of(final k k, final v v) { return new maptypeentry<k, v>() {{this.key = k; this.value = v;}}; } } } @override public map<k, v> unmarshal(final genericmapadapter.maptype<k, v> v) throws exception { return new hashmap<k, v>() {{ (genericmapadapter.maptype.maptypeentry<k, v> myentrytype : v.entry) this.put(myentrytype.key, myentrytype.value);}}; } @override public maptype<k, v> marshal(final map<k, v> v) throws exception { return new genericmapadapter.maptype<k, v>() {{for (k key : v.keyset()) this.entry.add(maptypeentry.of(key, v.get(key)));}}; } }
you not able described. type parameters not retained class. introduce simple subclasses leverage logic genericmapadapter:
public class stringdoublemapadapter extends genericmapadapter<string, double> { } then use adapter sub class on property:
@xmljavatypeadapter(stringdoublemapadapter.class)// private final hashmap<string, double> depwagesum = // new hashmap<string, double>(); for more information on xmladapter see:
Comments
Post a Comment