Ich möchte nicht XmlJavaTypeAdapter
Annotationen mit XmlAdapter-Klasse in meinem Code direkt verwenden. Also schrieb ich einige Wrapper:@ XmlJavaTypeAdapter und wrappers
class BinderWrapper<MODEL, BEAN> extends XmlAdapter<BEAN, MODEL>{
private final Binder<MODEL, BEAN> target;
private BinderWrapper(Binder<MODEL, BEAN> target){
this.target = target;
}
static <MODEL, BEAN> BinderWrapper<MODEL, BEAN> createInstance(Binder<MODEL, BEAN> binder){
return new BinderWrapper<MODEL, BEAN>(binder);
}
@Override
public MODEL unmarshal(BEAN v) throws Exception {
return target.unBean(v);
}
@Override
public BEAN marshal(MODEL v) throws Exception {
return target.toBean(v);
}
}
das ist wrappes meine Bindemittel wie XmlAdapter
s. Alle meine Bindemittel wird implementiert Binder
Schnittstelle
public interface Binder<MODEL, BEAN> {
MODEL unBean(BEAN bean);
BEAN toBean(MODEL model);
}
Aber es gibt ein Problem. @XmlJavaTypeAdapter
erfordern XmlAdapter-Klasse ohne Wrapper. Wie kann ich dieses Problem lösen? - Verwenden Sie andere Annotation/Schreiben Sie einige Config/schreiben Sie einige magische Annotation/..
Vielen Dank.
upd
I Modellklassen, die nicht Java Beans sind. Also möchte ich ein zweistufiges Mapping machen: in Beans und dann in xml. Ich möchte auch den ersten Schritt mit Anmerkungen machen. Wahrscheinlich brauche ich diese Bohnen nicht nur für JAXB. Die wirkliche Frage ist: kann ich ersten Schritt mit einigen nicht JAXB Anmerkungen tun?
Warum Sie direkt die @XmlJavaTypeAdapter Annotation nicht verwenden? Ich bin nicht sicher, was Sie mit Ihrem Ansatz gewinnen. –
@Blaise Doughan, Hm .. Ich denke, es wird mein Code übersät sein. –
@Blaise Doughan, Frage aktualisiert. –