5
我從來沒有使用過JAXB。我正在研究一個測試線束項目。我有大約20個不同的測試案例。當我運行我的測試時,我得到這個錯誤。3次IllegalAnnotationExceptions
我的結構是這樣的:
A
是基TestCase類。
B
延伸A
。
C
延伸B
。
基類A:B
public class A {
public A(String t){
testName = t;
}
private String aData;
private String testName;
public void setAData(String a){
aData = a;
}
public void getAData(){
return aData;
}
public void setTestName(String t){
testName = t;
}
public void getTestName(){
return testName;
}
}
類:
public class B extends A{
public B(String testName){
super(testName);
}
private String bData;
public void setBData(String b){
bData = b.trim();
}
public String getData(){
return bData;
}
}
C類:
@XmlRootElement(name="C")
public class C extends B{
public C(String testName){
super(testName);
}
private String cData;
public void setCData(String c){
cData = c;
}
public String getCData(){
return cData;
}
}
及解編我的XML文件,我寫
public C unmarshall(C test, String dir){
try {
JAXBContext jc = JAXBContext.newInstance(c.getClass);
Unmarshaller u = jc.createUnmarshaller();
test = (C)u.unmarshal(new FileInputStream(dir));
} catch (Exception e) {
System.out.println(e.getMessage());
}
return test;
}
我的XML文件的樣子:
<C>
<aData> aaaa </aData>
<bData> bbbb </bData>
<cData> cccc </cData>
</C>
當我運行我的代碼我得到IllegalAnnotationException的3個計數。
爲什麼要添加ze參數構造函數? – om39a 2014-05-13 16:58:56
據我所知,零arg缺省構造函數是必需的,因爲serilization/deserialization工作的方式是使用默認構造函數創建第一個實例,然後使用反射注入值。所以你需要一個默認的構造函數。 – 2015-10-28 11:16:47