Когда вызываю соответствующий метод в каждом else-if, пишу: apartment.clean~Rooms();
IDEA сама дописывает явное приведение:
public static void cleanAllApartments(List<Apartment> apartments) {
for (Apartment apartment : apartments) {
if (apartment instanceof OneRoomApt)
((OneRoomApt) apartment).clean1Room();
else if (apartment instanceof TwoRoomApt)
((TwoRoomApt) apartment).clean2Rooms();
else if (apartment instanceof ThreeRoomApt)
((ThreeRoomApt) apartment).clean3Rooms();
Не могу понять, зачем оно там. Если в условиях оператора if и так спрашиваем что объект является экземпляром этого класса.