當我們爲類使用接口時,如何使用JAXB將對象封送到XML文件中?我有以下簡單的類:從實現與JAXB接口的類實例化封送Java對象
public interface IBook {
public abstract String getName();
public abstract void setName(String name);
}
@XmlRootElement
public class Book implements IBook {
private String name;
@Override
@XmlElement(name ="BookTitle")
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
}
@XmlRootElement
public class BookStore {
@XmlElement(name ="BookStoreName")
public String name;
@XmlElementWrapper(name ="bookList")
@XmlAnyElement
public HashSet<IBook> books= new HashSet<IBook>();
}
,當我試圖從元帥的書店對象到XML文件中,我得到以下錯誤:
[com.sun.istack.internal.SAXException2: Weder class de.uni_paderborn.books.Book noch eine der zugehörigen Superklassen ist diesem Kontext bekannt.
javax.xml.bind.JAXBException: Weder class de.uni_paderborn.books.Book noch eine derzugehörigenSuperklassen ist diesem Kontext bekannt。]
對不起德國錯誤信息,但我的操作系統是德語。這意味着在這種情況下,Book類和其中的一個超類都是已知的!爲什麼我會得到這樣的錯誤?
您可能會發現以下內容有用:http://blog.bdoughan.com/2011/05/jaxb-and-interface-fronted-models.html。另外,我很好奇爲什麼你在'books'字段上使用'@ XmlAnyElement'。 – 2014-12-05 15:42:13
因爲沒有它,我得到另一個錯誤,告訴我試圖編組一個接口,因爲書'HashSet'中的元素來自'IBook',而不是'Book'。謝謝! – Anas 2014-12-05 15:53:09
我已經添加了一個應該可以幫助的答案:http://stackoverflow.com/a/27319803/383861 – 2014-12-05 15:55:31