这个问题延续了我以前的思路:here
现在我想使用一个通用的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)
...有人能向我解释我的代码出了什么问题,以及如何解决这个问题吗?
发布于 2015-01-07 13:15:34
通过使用MOXy作为JAXB实现,我终于设法解决了我的问题。谢谢你抽出时间,祝你今天愉快!
https://stackoverflow.com/questions/27780351
复制相似问题