我无法弄清楚@XmlJavaTypeAdapter 如何与@XmlSeeAlso 一起使用。我有一个抽象类,并且我在该类中指定了另一种扩展它的类:
@XmlSeeAlso({Position.class})
public abstract class Component implements Serializable {
...
由于 Position 没有无参数构造函数,因此我使用 Adapters 使其工作:
@XmlJavaTypeAdapter(PositionAdapter.class)
public class Position extends Component{
...
但是,JAXB 似乎忽略了这一点,我仍然收到“...没有无参数默认构造函数”错误。
这是我的适配器:
public class AdaptedPosition {
private double x;
private double y;
@XmlElement(name = "x")
public double getX(){
return x;
}
@XmlElement(name="y")
public double getY(){
return y;
}
public void setX(double x){
this.x = x;
}
public void setY(double y){
this.y = y;
}
}
public class PositionAdapter extends XmlAdapter<AdaptedPosition, Position>{
@Override
public AdaptedPosition marshal(Position position) throws Exception {
AdaptedPosition adaptedPosition = new AdaptedPosition();
adaptedPosition.setX(position.getX());
adaptedPosition.setY(position.getY());
return adaptedPosition;
}
@Override
public Position unmarshal(AdaptedPosition position) throws Exception {
return new Position(position.getX(), position.getY());
}
}
有谁知道这背后的原因以及我做错了什么?
谢谢