我有以下幾點:@XmlSeeAlso替代
class A{
@XmlElement
String name;
//getters and setters
}
和
class B extends A{
@XmlElement
String height;
//getters and setters
}
最後我已經
@XmlRootElement
class P{
@XmlElement
List<A> things;
//getters and setters
}
如果我做
List<A> l = new ArrayList<A>();
l.add(new B('hello', 20)) //Add new B with height of 20 and name hello
P p = new P();
p.setThings(l); //Set things to list of B's.
和元帥P,我只把領域看作是事物的一部分,而不是身高。
我知道我可以在A中添加@XmlSeeAlso(B.class),它將全部工作。
但問題是我不知道除B之外的所有擴展類,因爲A可能會在運行時擴展。
如何在運行時動態定義@XmlSeeAlso?
感謝您的回覆。在與定義A和P的同一項目中調用newInstance(它是一個常見的Maven項目)。 B類的項目取決於該項目,所以newInstance對B類沒有任何知識。我想這在JAXB中是不可能的。 –
@Ken Hirakawa:這確實是一個棘手的情況,我已經用可能的解決方案擴展了我的答案。 –