Pobranie typu obiektu i auto rzutowanie

0

Witam,

mam klasę GameObject oraz dziedziczące po niej Player i Monster. Klasa GameObject zawiera metodę move(). Klasy dziedziczące przesłaniają to metodę w tym stylu:

@Override
public void move() { 
    super.move();

    // dalsze działania w zależności od obiektu
}

Obiekty na planszy przechowuje w liście, następnie je iteruje:

for(Iterator<GameObject> i = P.get().getLevel().getGameObjectsList().iterator(); i.hasNext(); ) {
    GameObject item = i.next();
                            
    if(item.getObjectState() == ObjectState.IDLE) {
        item.move();
    }
}

Problemem jest to, że wywołuje się metoda z GameObject, a nie ta przesłonięta z racji tego, że nie ma rzutowania. Jak automatycznie to rzutować? Za pomocą getClass() jestem w stanie pobrać jakiego typu to obiekt, ale za nic nie mogę z tego rzutować. Można to oczywiście zrobić na if, ale wolałbym jakoś automatycznie.

0

Bzudra. Nic tu nie nalezy rzutować. Wywołuje sie metoda z klasy z której powinna sie wywołać, zaręczam ci. W Javie polimorfizm działa out-of-the-box.
Nie wierzysz? Włącz to pod debuggerem i zobacz gdzie ci wskoczy jak wywołasz tą metodę.

0

Dzięki, przyznam, że nie sprawdziłem tego :) Tylko myślałem, że tak jest, a jak widać myliłem się. To wiele uproszcza, dzięki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1