Mam kilka fasoli generowanych przez JAXB, które są w strukturze hierarchicznej, np. jeden komponent bean zawiera listę innych komponentów bean. Teraz chcę rozszerzyć element potomny, a także element nadrzędny przytrzymujący rozszerzone elementy potomne.JAXB przedłuża wygenerowany kod z rozszerzoną fabryką obiektów - wyraźne rzutuje dobrze?
Mój ParentEx
implementuje inny interfejs IParent
, który powinien zwrócić wartość Collection<IChild>
. Mój ChildEx
implementuje IChild
. Czy mogę zwrócić (Collection<IChild>)super.getChild()
, gdy super.getChild()
zwraca List<Child>
? A może jest lepszy sposób na zrobienie tego?
Child
iParent
są generowane JAXB fasoliChildEx
iParentEx
są moje własne ziarna do mapowania fasolę JAXB do podanych interfejsach. Oba fasola przesłonićObjectFactory
IChild
iIParent
interfejsy są potrzebne z innego biblioteki
Edit: Eclipse nawet nie pozwolić moją obsadę z List<Child>
do List<ChildEx>
więc muszę dodać trochę brzydki wieloznaczny pośrednika odlew (List<ChildEx>)(List<?>)super.getChild()
Dlaczego miałbyś to robić? 'List' 'jest" 'Collection ' w każdym przypadku. O ile nie brakuje mi oczywistego, interfejs 'IParent' jest w pełni zadowolony z każdej implementacji' IChild'? –
user268396
Dzięki, ale nie, "Parent" ma metodę "List getChild()", a "IParent" mówi, że musi zwrócić 'Collection '. Dlatego będę musiał wykonać ekslikt w moim 'ParentEx'. Nie chcę modyfikować automatycznie generowanych ziaren, dlatego jedynym sposobem na uzyskanie automatycznie generowanej fasoli dla interfejsu 'IParent' jest napisanie własnego' ParentEx implementuje IParent' –
Czy rozwiązanie z nową ArrayList działa dla ciebie? – Andrejs