Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: metoda s parametrem z tridy potomka

Aktivity
Avatar
peal
Člen
Avatar
peal:25.2.2014 20:27

Zdravim,
zkousim si programovat jednoduchou variaci Space Invaders abych si procvicil "komplexnejsi" objektovy navrh a vse s tim souvisejicim.
Ted vsak trochu bojuju s dedicnosti, protoze to bud delam spatne, nebo mam mezirku ve vzdelani.

Mam abstraktni rodicovskou tridu Entity a z ni dedici Alien a Shot.
Dale mam abstraktni rodicovskou tridu EntityList, ktera krom jineho obsahuje i neco na zpusob garbage collectoru.
Z ni dedi tridy AlienList a ShotList, coz jsou tridy s kolekci uz individualnich entit.

Idea je takova, ze do ArrayListu garbage v rodicovi pridavam objekty na smazani, ktere pak zpetne odstranim z dane kolekce v potomkovi.

private ArrayList<Entity> garbage;
private ArrayList<Entity> garbageTemp;

protected void removeGarbageFromList(ArrayList<Entity> entityList) {
        garbageTemp.removeAll(entityList);
        entityList.removeAll(garbage);
        garbage.retainAll(garbageTemp);
        emptyGarbage(garbageTemp);
}

protected void addToGarbage(Entity entity) {
        garbage.add(entity);
}

Problem nastava, kdyz pak z potomka chci zavolat
removeGarbage­FromList(shot­s); pripadne
removeGarbage­FromList(alien);
Myslel jsem si, ze kdyz to jsou potomci jedne tridy, nemel by byt problem.
IDE mi vsak hlasi, ze vyzaduje natvrdo tu rodicovskou entitu, nikoliv tu z podtridy.

Jestli jsem to napsal nesrozumitelne, navedte me prosim co mam vysvetlit lepe, abych v tom mel konecne jasno. Diky

 
Odpovědět
25.2.2014 20:27
Avatar
peal
Člen
Avatar
Odpovídá na peal
peal:25.2.2014 21:35

tak uz jsem to rozchodil, ale nevim nakolik ciste to je reseni. nerad bych ziskal spatne navyky.

protected void removeGarbage­FromList(Arra­yList<?> entityList)

 
Nahoru Odpovědět
25.2.2014 21:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.