Ho alcuni bean generati da JAXB che si trovano in una struttura gerarchica, ad es. un fagiolo contiene un elenco di altri fagioli. Ora voglio estendere alcuni elementi figlio e anche l'elemento genitore che tiene i bambini estesi.JAXB estende il codice generato con l'oggetto factory esteso - il cast esplicito è buono?
Il mio ParentEx
implementa un'altra interfaccia IParent
che dovrebbe restituire un Collection<IChild>
. I miei strumenti ChildEx
IChild
. Posso restituire un (Collection<IChild>)super.getChild()
quando super.getChild()
restituisce List<Child>
? O c'è un modo migliore per farlo?
Child
eParent
sono JAXB generato fagioliChildEx
eParentEx
sono i miei fagioli per mappare i fagioli JAXB alle interfacce dati. Entrambi i fagioli sostituiscono ilObjectFactory
IChild
eIParent
sono le interfacce necessarie da qualche altra libreria
Edit: Eclipse non ha nemmeno lasciare che il mio cast List<Child>
-List<ChildEx>
quindi devo aggiungere un po 'brutto jolly intermediario getto (List<ChildEx>)(List<?>)super.getChild()
Perché dovresti farlo? 'Lista ' "è una" Collezione "in ogni caso. A meno che non mi sfugga l'ovvio, l'interfaccia 'IParent' è pienamente soddisfatta da qualsiasi implementazione' IChild'? –
user268396
Grazie, ma no, 'Parent 'ha il metodo' Elenco getChild() 'e' IParent' dice che deve restituire una 'Collezione '. Pertanto dovrò fare un cast esplicito nel mio 'ParentEx'. Non voglio modificare i bean autogenerati, quindi l'unico modo per ottenere i bean autogenerati adatti all'interfaccia 'IParent' è scrivere un proprio' ParentEx implements IParent' –
La soluzione con il nuovo ArrayList funziona per te? – Andrejs