gpt4 book ai didi

java - @XmlJavaTypeAdapter 和包装器

转载 作者:行者123 更新时间:2023-11-30 09:52:00 34 4
gpt4 key购买 nike

我不想在我的代码中直接对 XmlAdapter 的类使用 XmlJavaTypeAdapter 注释。所以,我写了一些包装器:

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);
}
}

它像 XmlAdapter 一样包装了我的 Binder 。我所有的 Binder 都将实现 Binder 接口(interface)

public interface Binder<MODEL, BEAN> {
MODEL unBean(BEAN bean);
BEAN toBean(MODEL model);
}

但是有个问题。 @XmlJavaTypeAdapter 需要没有任何包装器的 XmlAdapter 类。我该如何解决这个问题? - 使用其他注解/写一些配置/写一些神奇的注解/..

谢谢。

更新

我有不是 JavaBeans 的模型类。所以我想做一些两步映射:在 beans 中而不是在 xml 中。我也想做注释的第一步。可能我不仅需要 JAXB 需要这个 bean。真正的问题是:我可以用一些非 JAXB 注释做第一步吗?

最佳答案

I have model classes that aren't JavaBeans. So I want do some two step mapping : in beans and than into xml. I want do first step with annotations too. Probably I well need this beans not only for JAXB. The real question is : can I do first step with some non JAXB annotations?

XmlAdapter 提供了您正在寻找的两步映射。如果您查看下面链接的示例,Map 是不是 Java Bean 的对象。 XmlAdapter 所做的是将其转换为可以映射的 Java Bean。

您可能会发现在类型级别而不是属性级别使用@XmlJavaTypeAdapter 批注更容易。当在类型级别使用时,您是在说每个引用该类的人都应该使用适配器而不是每个属性。查看我在 JAXB and Immutable Objects 上的帖子对于类型级别的示例。

有关详细信息,请参阅:

关于java - @XmlJavaTypeAdapter 和包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412601/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com