Tengo algunos beans generados JAXB que están en una estructura jerárquica, p. un frijol tiene una lista de otros frijoles. Ahora quiero extender algún elemento hijo y también el elemento padre que contiene los hijos extendidos.JAXB extienden el código generado con la fábrica de objetos extendidos: ¿los moldes explícitos son buenos?
Mi ParentEx
implementa alguna otra interfaz IParent
que se espera que devuelva Collection<IChild>
. Mi ChildEx
implementa IChild
. ¿Puedo devolver un (Collection<IChild>)super.getChild()
cuando super.getChild()
devuelve List<Child>
? ¿O hay una forma más agradable de hacer esto?
Child
yParent
son JAXB genera granosChildEx
yParentEx
son mis propios granos para el mapeo de los granos de JAXB a las interfaces dadas. Ambos granos anulan laObjectFactory
IChild
yIParent
son las interfaces necesarias de alguna otra biblioteca
Editar: Eclipse ni siquiera dejar que mi elenco de List<Child>
a List<ChildEx>
así que tengo que añadir un poco de comodín intermediario fea cast (List<ChildEx>)(List<?>)super.getChild()
¿Por qué tendrías que hacer esto? 'List' "es una' 'Colección ' en cualquier caso. A menos que me falta lo obvio, la interfaz 'IParent' está totalmente satisfecha con cualquier implementación de' IChild' también? –
user268396
Gracias, pero no, el 'Parent' tiene el método' List getChild() 'y el' IParent' dice que debe devolver 'Collection '. Por lo tanto, tendré que hacer un lanzamiento explícito en mi 'ParentEx'. No quiero modificar los beans autogenerados, por lo tanto, la única forma de obtener beans generados automáticamente para la interfaz 'IParent' es escribir un' ParentEx implements IParent' –
¿La solución con ArrayList funciona para ti? – Andrejs