[英]How to use JAXB Java Type Adapters
我在弄清楚@XmlJavaTypeAdapter如何與@XmlSeeAlso一起工作時遇到了麻煩。 我有一個抽象類,並在該類中指定了擴展它的類:
@XmlSeeAlso({Position.class})
public abstract class Component implements Serializable {
...
並且由於Position是沒有no arg構造函數,所以我使用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());
}
}
有人知道這背后的原因以及我在做什么錯嗎?
謝謝
您運行哪個代碼來看到該錯誤? 無法重現。
Marshaller marshaller = JAXBContext.newInstance(SomeElement.class).createMarshaller();
SomeElement element = new SomeElement();
element.setPosition(new Position(1, 1));
marshaller.marshal(element, System.out);
該輸出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><someElement><position><x>1.0</x><y>1.0</y></position></someElement>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.