[JAVA] ArrayList a dziedzczenie


(Szczepi 86) #1

Mam pewien problem z "wyciaganiem" obiektow z ArrayList.

Otoz stworzylem w javie klase "Polaczenie" oraz dwie klasy dziedziczace po tej klasie: "PolaczenieSzeregowe" i "PolaczenieRownolegle". Chodzi tu o typowe polaczenie opornikow. Klasa nadrzedna ma zmienna typu boolean "flaga". Ustawienie flagi na false swiadczy o tym ze rozpatrywany obiekt to obiekt klasy "PolaczenieSzeregowe". Utawienie flagi na true swiadczy o tym ze dany obiekt jest obiektem klasy "PolaczenieRownolegle". Flagi sa ustawiane w czasie tworzenia danych obiektow (w konstruktorze). W czasie pracy programu tworze sobie liste ArrayList i wrzucam do niej zarowno polaczenia szeregowe jak i rownolegle.

Nastepnie chce przeszukac sobie te liste i wybrac z tej listy tylko polaczenia rownolegle (tam gdzie flaga jest true).

for(int i=0; i<=listapolaczen.size();i++){

            if(listapolaczen.get(i).getFlag()==true){

                PolaczenieRownolegle ps=listapolaczen.get(i);

            }

        }

Niestety wyskakuje blad, ktory mowi mi ze do zmiennej ps nie moge przypisac zadnego elementu z listy poniewaz na liscie mam obiekty typu "Polaczenie" a nie "PolaczenieRownolegle". Jak to obejsc by moc pobrac z listy polaczen tylko poleczanie rownolege?

Pozdrawiam


(Sawyer47) #2

Z Javą zbyt dużego doświadczenia nie mam, ale czy nie wystarczy w tym przypadku rzutowanie?


(Ravenye) #3

Rzutowanie jakbyś nie wiedział :slight_smile: :

PolaczenieRownolegle ps=(PolaczenieRownolegle)listapolaczen.get(i);

(Szczepi 86) #4

O wlasnie :slight_smile: nie wiem czemu o tym nie pomyslalem tylsko spanikowalem :slight_smile: Bardzo Wam dziekuje.


(somekind) #5

Czegoś tu nie rozumiem. Po co Ci dodatkowo flaga do określania tego, co określa już typ klasy?


(Kornicameister) #6

gotów jestem się zgodzić, o ile pamiętam dobrze jest metoda która zwraca typ, nazwę klasy, nie pamiętam dokładnie w sumie, więc jak coś mogłem się pomylić, ale jestem prawie pewien ;p