Sprawdź atrybut podklasy

Natknąłem się na tę sytuację, ale nie wiem, jak sobie z tym poradzić:

class Myclass { }
class MyclassWithAwesomeStuff extends Myclass {
    public boolean awesomeStuff;
}

Zapisuję obiekty Myclass w arraylistyce i iteracyjnie później przez tę listę:

for(Myclass m : list) {
    //here I want to check if awesomeStuff is true, in case it is a MyclasswithAwesomeStuff
}

Problem polega na tym, że klasa macierzysta Myclass nie zna atrybutu awesomeStuff (i nie powinna, ponieważ jest to funkcja, która pochodzi tylko z klasą pochodną). Ale jak mogę sobie z tym poradzić? Problem polega na tym, że arrayylist zawiera elementy Myclass i MyclassWithAwesomeStuff, a pętla foreach rzuca je zawsze do Myclass.

Zastanawiam się, czy to jest awaria projektu?

//EDYTOWAĆ:

Dobra, aby moje pytanie było trochę bardziej namacalne, tutaj więcej informacji. Próbuję zbudować małą kawiarnię:

class Coffee { }
class CoffeeMix extends Coffee {
    public boolean shaken;
}

Zapisuję elementy kawy na liście tablic:

ArrayList<Coffee> coffees = new ArrayList<Coffee>();

Na tej liście tablic znajdują się normalne obiekty kawowe i obiekty mieszanki kawy. Teraz chcę wyświetlić wszystkie obiekty mieszanki kawy, które są wstrząśnięte:

for(Coffee c : coffees) {
    //here is the same problem as above
}

Jak widzę w odpowiedziach / komentarzach: instanceof wydaje się być złym pomysłem, ponieważ wkręca pomysł z oo i interfejs, który implementują obie klasy, to także zły pomysł, ponieważ normalnej kawy nie można wstrząsnąć. Więc jak sobie z tym poradzić?

questionAnswers(3)

yourAnswerToTheQuestion