2010-01-27 5 views
13

Können einige mir bitte erklären, was zu tun@XmlElementRefs & @XmlElementRef Annotationen in Java

@XmlElementRefs 

und

@XmlElementRef 

Annotationen in Java bedeuten und was ist ihre Verwendung ..

EDIT: @skaffman

in Ordnung, nehme ich an eine solche Sammlung

@XmlElementRefs({ 
    @XmlElementRef(name="ElementA", type=ClassA), 
    @XmlElementRef(name="ElementB", type=ClassB) } 
) 

List<Object> items; 

Jetzt haben wie ich jedes einzelne Element dieser Liste zugreifen? Ist der folgende Code korrekt?

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: 
    } 
} 

Ist dieser Ansatz richtig? Gibt es eine bessere Möglichkeit, jede klassenspezifische Verarbeitung durchzuführen? Ich meine, gibt es eine Möglichkeit, diese if else Konstrukte zu vermeiden?

+0

Normalerweise verwenden Sie dies mit Polymorphie. ClassA und ClassB erweitern beide ClassBase, so dass Sie die Verarbeitung nicht if/else korrekt ausführen müssen. – ewernli

Antwort

6

Diese werden verwendet, um eine Sammlung zu kommentieren, die verschiedene Typen enthalten kann. Die Java für eine solche Liste Bindung:

@XmlElementRefs({ 
    @XmlElementRef(name="ElementA", type=ClassA), 
    @XmlElementRef(name="ElementB", type=ClassB) 
}) 
List<Object> items 

Hier items eine beliebige Mischung aus ClassA und ClassB enthalten kann, und da diese nicht in List ‚s Art Signatur ausgedrückt werden kann, hat es ausgedrückt werden unter Verwendung von Anmerkungen.

+0

in Ordnung, nehme ich an eine solche Sammlung @XmlElementRefs haben ({ @XmlElementRef (name = "Elementa", type = KlasseA), @XmlElementRef (name = "elementb", type = ClassB) }) Liste Artikel; Wie kann ich nun auf jedes einzelne Element dieser Liste zugreifen? Ist der folgende Code korrekt? für (int j = 0; j

+0

ich das nicht lesen kann. Bitte fügen Sie Ihre Frage hinzu (und formatieren Sie sie korrekt). – skaffman

+0

Aber das gleiche funktioniert auch mit @XmlElements und @XmlElement, nein? – ewernli

Verwandte Themen