請注意,JAXB不能創建抽象類的實例;因此您需要將xml標籤綁定到DataObject的具體子類。
下面的例子顯示了一個具體的StringMatchDataObject類;其他類可以按照同樣的結構:
public abstract class DataObject {
private String value;
private String dataType;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public abstract String getMatch();
public abstract void setMatch(String match);
}
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="DataObject")
public class StringMatchDataObject extends DataObject {
private String match;
@Override
public String getMatch() {
return match;
}
@Override
public void setMatch(String match) {
this.match = match;
}
}
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class AppRun {
public static void main(String[] args) throws JAXBException {
StringMatchDataObject stringMatchDataObject = new StringMatchDataObject();
stringMatchDataObject.setDataType("data type");
stringMatchDataObject.setMatch("STRING MATCH");
stringMatchDataObject.setValue("value");
JAXBContext context = JAXBContext.newInstance(StringMatchDataObject.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(stringMatchDataObject, System.out);
}
}
什麼你想重寫'getMatch'方法呢? –
基本上我想創建一個默認類的不同的子類。假設我的基地是'汽車',子類別是'ferrari','保時捷'。 getMatch會返回尺寸是重要還是馬力。理想情況下getMatch方法的返回類型會有所不同。 – jackoneill87