Reputation: 5323
Can some please explain to me what do
@XmlElementRefs
and
@XmlElementRef
annotations mean in Java and what is their use..
EDIT: @skaffman
okay, suppose I have one such collection
@XmlElementRefs({
@XmlElementRef(name="ElementA", type=ClassA),
@XmlElementRef(name="ElementB", type=ClassB) }
)
List<Object> items;
Now how do I access every individual element of this list? Is the following code correct?
for (int j = 0; j < items.size(); ++j) {
if (items.get(i).getClass().equals(ClassA)) {
// perform ClassA specific processing:
} else if (items.get(i).getClass().equals(ClassB)) {
// perform ClassB specific processing:
}
}
Is this correct approach? Is there a better way to perform each class specific processing? I mean is there a way to avoid those if else
constructs?
Upvotes: 14
Views: 12979
Reputation: 403441
These are used to annotate a collection which can contain various different types. The java binding for such a list is:
@XmlElementRefs({
@XmlElementRef(name="ElementA", type=ClassA),
@XmlElementRef(name="ElementB", type=ClassB)
})
List<Object> items
Here, items
can contain an arbitrary mix of ClassA
and ClassB
, and since that can't be expressed in List
's type signature, it has to be expressed using annotations.
Upvotes: 7