Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jaxb 如何指定使用XMLAdapter解组类的哪些实例?_Jaxb - Fatal编程技术网

Jaxb 如何指定使用XMLAdapter解组类的哪些实例?

Jaxb 如何指定使用XMLAdapter解组类的哪些实例?,jaxb,Jaxb,我有以下java类,并在payerPartyReference变量上放置了一个XmlJavaAdapter注释。我希望适配器PartyReferenceAdapter仅用于解组此变量,而不用于解组具有相同PartyReference类型的任何其他变量,无论是在此类还是其他类中。我该怎么做?谢谢你的帮助 public class InitialPayment extends PaymentBase { // Want PartyReferenceAdapter to be used he

我有以下java类,并在payerPartyReference变量上放置了一个XmlJavaAdapter注释。我希望适配器PartyReferenceAdapter仅用于解组此变量,而不用于解组具有相同PartyReference类型的任何其他变量,无论是在此类还是其他类中。我该怎么做?谢谢你的帮助

public class InitialPayment extends PaymentBase
{

    // Want PartyReferenceAdapter to be used here
    @XmlJavaTypeAdapter(PartyReferenceAdapter.class)
    protected PartyReference payerPartyReference;
    //
    // Dont want PartyReferenceAdapter to be used here
    protected PartyReference receiverPartyReference;
    //
    protected AccountReference receiverAccountReference;
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar adjustablePaymentDate;
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar adjustedPaymentDate;
    protected Money paymentAmount;
}
我的适配器定义如下:

public class PartyReferenceAdapter 
    extends XmlAdapter < Object, PartyReference > {

  public PartyReference unmarshal(Object obj) throws Exception {

     Element element = null;

     if (obj instanceof Element) {

        element = (Element)obj;

        String reference_id = element.getAttribute("href");
        PartyReference pr = new PartyReference();
        pr.setHref(reference_id);                   
        return pr;

    }

    public Object marshal(PartyReference arg0) throws Exception {
     return null;
    }
}
公共类PartyReferenceAdapter
扩展XmlAdapter{
public PartyReference解组器(对象obj)引发异常{
元素=null;
if(元素的obj实例){
元素=(元素)对象;
字符串引用_id=element.getAttribute(“href”);
PartyReference pr=新PartyReference();
pr.setHref(参考_id);
返回pr;
}
公共对象封送处理(PartyReference arg0)引发异常{
返回null;
}
}

字段/属性级别

如果在字段/属性上设置
@XmlJavaTypeAdapter
,则它将仅用于该属性

类型级别

如果在一个类型上设置
@XmlJavaTypeAdapter
,那么它将用于对该类型的所有引用

包级别

如果您在包上设置了
@XmlJavaTypeAdapter
,那么它将用于该包中对该类型的所有引用:


字段/属性级别

如果在字段/属性上设置
@XmlJavaTypeAdapter
,则它将仅用于该属性

类型级别

如果在一个类型上设置
@XmlJavaTypeAdapter
,那么它将用于对该类型的所有引用

包级别

如果您在包上设置了
@XmlJavaTypeAdapter
,那么它将用于该包中对该类型的所有引用:


第一种情况肯定是我想要的,但它不是这样工作的,即使我只在属性“PartyReference payerPartyReference”上设置适配器,如上所示。有什么想法吗?可能是因为我有相同的属性“PartyReference payerPartyReference”在许多其他类中,适配器也被应用到这些类中,因为它们具有相同的名称和类型?我编辑了我的原始问题以包括适配器。感谢您对这三个级别的解释!现在,如果我可以开始第一个级别的工作..它的作用更像包级别..我找到了设置的原因ng字段/属性级别上的适配器似乎不起作用..有另一个类正在扩展具有适配器的类..因此,每当使用任何一个类时,都会调用该适配器。再次感谢您的帮助第一种情况肯定是我想要的,但它不起作用,即使我只在t上设置了适配器财产“PartyReference payerPartyReference;”如上所示……有什么想法吗?可能是因为我有同样的财产“PartyReference payerPartyReference”在许多其他类中,适配器也被应用到这些类中,因为它们具有相同的名称和类型?我编辑了我的原始问题以包括适配器。感谢您对这三个级别的解释!现在,如果我可以开始第一个级别的工作..它的作用更像包级别..我找到了设置的原因ng字段/属性级别上的适配器似乎不起作用。有另一个类正在扩展具有适配器的类。因此,每当使用任何一个类时,都会调用适配器。再次感谢您的帮助