我有一个QuestionsData
类有一个列表QuestionData
。是QuestionData
一个抽象类,有两个实现:TextQuestionData
和SelectionQuestionData
.
问题是,在做之后clientResponse.getEntity
,我得到的对象只有一个列表SelectionQuestionData
,而我知道有些问题是类型的TextQuestionData
。
我尝试添加@XmlSeeAlso
,但没有帮助。我还尝试更改元素的顺序,@XmlElementRefs
但这导致所有问题都是 type TextQuestionData
。
我不知道这是否相关,但我在球衣中使用的对象是另一个QuestionsData
作为成员的Jaxb 对象
这是代码:
@XmlRootElement(name = "questions")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({SelectionQuestionData.class, TextQuestionData.class })
public class QuestionsData {
@XmlElementRefs({@XmlElementRef(type = TextQuestionData.class), @XmlElementRef(type = SelectionQuestionData.class)})
private List<QuestionData> questions;
private QuestionsData() {}
public QuestionsData(List<QuestionData> questions) {
this.questions = questions;
}
}
@XmlRootElement(name = "question")
@XmlAccessorType(XmlAccessType.FIELD)
public class TextQuestionData extends QuestionData {
@XmlElement
private String someString;
public TextQuestionData() {}
}
@XmlRootElement(name = "question")
@XmlAccessorType(XmlAccessType.FIELD)
public class SelectionQuestionData extends QuestionData {
@XmlElements({@XmlElement(name = "option")})
private List<String> options;
public SelectionQuestionData() {}
}