Tôi có một số hạt được tạo bằng JAXB có cấu trúc phân cấp, ví dụ: một bean chứa một danh sách các bean khác. Bây giờ tôi muốn mở rộng một số phần tử con và cũng là phần tử cha giữ các phần tử mở rộng.JAXB mở rộng mã được tạo ra với nhà máy đối tượng mở rộng - rõ ràng phôi tốt?
My ParentEx
thực hiện một số giao diện khác IParent
được dự kiến sẽ trả lại Collection<IChild>
. My ChildEx
thực hiện IChild
. Tôi có thể trả lại số (Collection<IChild>)super.getChild()
khi super.getChild()
trả về List<Child>
không? Hoặc là có một cách tốt hơn để làm điều này?
Child
vàParent
là JAXB tạo đậuChildEx
vàParentEx
là đậu của riêng mình cho lập bản đồ đậu JAXB để các giao diện nhất định. Cả đậu ghi đèObjectFactory
IChild
vàIParent
là các giao diện cần thiết từ một số thư viện khác
Edit: Eclipse thậm chí không để cho dàn diễn viên của tôi List<Child>
-List<ChildEx>
vì vậy tôi có thêm một số ký tự đại diện trung gian xấu xí đúc (List<ChildEx>)(List<?>)super.getChild()
Tại sao bạn cần phải làm điều này? 'Danh sách' "là một" Bộ sưu tập "trong mọi trường hợp. Trừ khi tôi bỏ lỡ điều hiển nhiên, giao diện 'IParent' hoàn toàn được thỏa mãn bởi bất kỳ triển khai' IChild' nào? –
user268396
Cảm ơn, nhưng không, 'Parent' có phương thức' List getChild() 'và' IParent' nói rằng nó cần trả về một 'Collection '. Vì vậy, tôi sẽ phải thực hiện một phép cast exlicit trong 'ParentEx' của tôi. Tôi không muốn thay đổi đậu tự tạo, do đó cách duy nhất để có đậu tự động được trang bị cho giao diện 'IParent' là viết một' ParentEx thực hiện IParent' của riêng mình –
Liệu giải pháp với ArrayList mới có làm việc cho bạn không? – Andrejs