2010-01-27 41 views
13

một số có thể vui lòng giải thích cho tôi những gì làm@XmlElementRefs & @XmlElementRef chú thích trong Java

@XmlElementRefs 

@XmlElementRef 

chú thích có nghĩa là trong Java và sử dụng của họ là gì ..

CHỈNH SỬA: @skaffman

sao, giả sử tôi có một bộ sưu tập như vậy

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

List<Object> items; 

Bây giờ làm thế nào để truy cập vào tất cả các yếu tố cá nhân của danh sách này? Mã sau có chính xác không?

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

Đây có phải là cách tiếp cận chính xác không? Có cách nào tốt hơn để thực hiện từng quy trình xử lý cụ thể không? Tôi có nghĩa là có một cách để tránh những cấu trúc if else?

+0

Bạn thường sử dụng tính năng này với đa hình. ClassA và ClassB đều mở rộng ClassBase, vì vậy bạn không cần nếu/else để gửi chính xác quá trình xử lý. – ewernli

Trả lời

6

Chúng được sử dụng để chú thích bộ sưu tập có thể chứa nhiều loại khác nhau. Java ràng buộc cho một danh sách như vậy là:

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

Ở đây, items có thể chứa một sự pha trộn độc đoán của ClassAClassB, và kể từ đó không thể được thể hiện bằng loại chữ ký List 's, nó phải được thể hiện bằng chú thích.

+0

sao, giả sử tôi có một bộ sưu tập như vậy @XmlElementRefs ({ @XmlElementRef (name = "ElementA", type = ClassA), @XmlElementRef (name = "ElementB", type = ClassB) }) Danh sách mặt hàng; Bây giờ, làm cách nào để truy cập từng phần tử riêng lẻ trong danh sách này? Mã sau có chính xác không? cho (int j = 0; j

+0

Tôi không đọc được. Vui lòng thêm câu hỏi của bạn (và định dạng nó đúng cách.) – skaffman

+0

Nhưng điều tương tự cũng hoạt động với @XmlElements và @XmlElement, không? – ewernli

Các vấn đề liên quan