Предположим, у меня есть это
interface Movable
{//some stuff}
И у меня есть
class Car implements Movable
{//some stuff}
И также, возможно, у меня есть
class Bike implements Movable
{//some stuff}
Я заметил, что если бы у меня было это:
ArrayList<Movable> movableThings = new ArrayList<Movable>();
movableThings.add(some kind of Car)
movableThings.add(some kind of Bike)
movableThings.add(some kind of Bike)
Это можно вызвать:
for(Movable m: movableThings)
Но если я назову это, я получу несовместимые типы:
for(Bike b: movableThings)
Может кто-нибудь объяснить и, может быть, предложить лучший способ? Я знаю, что могу использовать foreach Movable m: movableThings, а затем использовать instanceof для проверки байков, но есть ли другой способ?
Edit: хорошо, спасибо за разъяснения, ребята ...поэтому я думаю, что я либо использую instanceof, либо переделываю свою игру