Tengo una propiedad Lista donde quiero almacenar elementos de tipo 'Unit'. Existe una jerarquia para esta clase Unit y realmente no quiero almacenar elementos Unit sino elementos de alguna de sus subclases. Así que tengo declarado lo siguiente:
Código:
public abstract class WFUnit extends Unit { ...etc... }
Código:
Así, el correspondiente manegador inicializará la estructura, tal como:public abstract class Manager { protected List<? extends Unit> armyList = null; ...etc.. }
Código:
public abstract class ManagerWF extends Manager { public ManagerWF() { super(); armyList = new ArrayList<WFUnit>(); } protected void addUnit(WFUnit u) throws Exception { this.armyList.add(u); //<=== ERROR!!!! } protected void removeCurrentUnit() throws Exception { WFUnit u = (WFUnit) getUnit(); this.armyList.remove(u); }
Pero el problema me aparece cuando quiero añadir elementos a este ArrayList desde el ManagerWF, tal como está el método addUnit.. El error de compilación es el siguiente:
"The method add(capture#2-of ? extends Unit) in the type List<capture#2-of ? extends Unit> is not applicable for arguments (WFUnit)".
Es curioso porque la línea 'this.armyList.remove(u);' del otro método no me da error de compilación. Yo pienso que mi declaración es correcta pero consiguo averiguar como solucionar el error.
¿Alguna idea? ¿O cúal es mi error?
Un saludo.