簡體   English   中英

JAXB通用XmlAdapter實現

[英]JAXB Generic XmlAdapter implementation

這個問題繼續了我以前的話題: 這里

現在,我想使用通用的XmlAdapter,因為我需要將相同的工作應用於值的不同類型。 我可以為每種類型創建一個類,但這不是我的問題的目的,我想使它通用。 所以這就是我所做的:

通用適配器類

public class GenericXMLAdapter<T> extends XmlAdapter<GenericXMLAdapter.AdaptedValue<T>, T>{
  public static class AdaptedValue<T> {
        @XmlAttribute
        public T code;
  }

  @Override
  public T unmarshal(AdaptedValue<T> v) throws Exception {
        return v.code;
  }

  @Override
  public AdaptedValue<T> marshal(T v) throws Exception {
        AdaptedValue<T> adaptedValue = new AdaptedValue<T>();
        adaptedValue.code = v;
        return adaptedValue;
  }

}

我的臨時類生成正確的適配器

public final class DefinedXMLAdapter {
      public static class BooleanAdapter extends GenericXMLAdapter<Boolean> {};
}

編組的例子

  @XmlElement(name = "theBoolean")
  @XmlJavaTypeAdapter(DefinedXMLAdapter.BooleanAdapter.class)
  protected Boolean myBoolean = false;

當我執行代碼時,出現一個我不明白的怪異錯誤:

Exception in thread "main" java.lang.NullPointerException
  at com.sun.xml.internal.bind.v2.runtime.reflect.TransducedAccessor.get(TransducedAccessor.java:154)
  ...

有人可以向我解釋我的代碼有什么問題以及如何解決此問題嗎?

我最終設法通過使用MOXy作為JAXB實現來解決我的問題。 謝謝您的時間,祝您有美好的一天!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM