Java 如何将XML解组到此类?

Java 如何将XML解组到此类?,java,xml,jaxb,Java,Xml,Jaxb,我想使用JAXB解组器将XML解组到这种类型的对象 public class Pair<T1,T2> implements Serializable { private T1 first; private T2 second; public Pair(T1 first, T2 second) { this.first = first; this.second = second; } public T1 ge

我想使用JAXB解组器将XML解组到这种类型的对象

public class Pair<T1,T2> implements Serializable {
    private T1 first;

    private T2 second;

    public Pair(T1 first, T2 second) {
        this.first = first;
        this.second = second;
    }

    public T1 getFirst() {
        return first;
    }

    public void setFirst(T1 first) {
        this.first = first;
    }

    public T2 getSecond() {
        return second;
    }

    public void setSecond(T2 second) {
        this.second = second;
    }
}


public class TripPair<T1,T2> extends Pair<T1,T2> {

    public TripPair(T1 first, T2 second) {
        super(first, second);
    }
}

public class Fare extends Pricing implements Comparable<Fare> {

    private List<TripPair<Integer,Integer>> trips = new LinkedList<>();
}

您需要为
类添加一个零参数构造函数,或创建一个
XmlAdapter
,以使其正确解组(请参阅:)

更新
我正在使用JAXB marshaller进行调试 非封送元素,其类型错误。ElementsImpl而不是 整数

就JAXB而言,
第一个
第二个
将被视为类型
对象
,因为它在类级别
而不是类型级别
派生元数据。因此,XML需要使用必要的类型信息限定XML元素。这是使用
xsi:type
属性完成的

public class Pair<T1,T2> implements Serializable {
    private T1 first;

    private T2 second;
公共类对实现可序列化{
私人T1优先;
私人T2秒;

尝试用所需的数据填充对象模型,然后对其进行编组,您将看到解组操作的XML应该是什么样子。

我尝试使用
XmlAdapter
,但它仍然无法正常工作:(@misco-当您填充对象模型并封送它时,生成的XML是什么样子的?您的
XmlAdapter
也是什么样子的。我正在使用JAXB封送器,当我调试未封送的元素时,它的类型是错误的。ElementNSImpl而不是Integer。@misco:您至少应该对这个答案投赞成票e在你的行为上花费的精力。如果它回答了你的问题(很可能会),你应该接受它。请查看@misco:请查看解释所有问题的链接。祝你的项目好运!
public class PairAdapter extends XmlAdapter<String, Integer> {

    public String marshal(Integer val) throws Exception {
        return val.toString();
    }

    public Integer unmarshal(String val) throws Exception {
        return Integer.valueOf(val);
    }
}

public class Pair<T1,T2> implements Serializable {
    @XmlJavaTypeAdapter(PairAdapter.class)
    private T1 first;

    @XmlJavaTypeAdapter(PairAdapter.class)
    private T2 second;
}
public class Pair<T1,T2> implements Serializable {
    private T1 first;

    private T2 second;