почему в строках 12-20 мы вызваем сужение типов? в интерфейсе же нет шаблона.
public class Solution {
public static void main(String[] args) {
List<Apartment> apartments = new ArrayList<Apartment>();
apartments.add(new OneRoomApt());
apartments.add(new TwoRoomApt());
apartments.add(new ThreeRoomApt());
cleanAllApartments(apartments);
}
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();
}
}
interface Apartment {
}
static class OneRoomApt implements Apartment {
void clean1Room() {
System.out.println("1 room is cleaned");
}
}
static class TwoRoomApt implements Apartment {
void clean2Rooms() {
System.out.println("2 rooms are cleaned");
}
}
static class ThreeRoomApt implements Apartment {
void clean3Rooms() {
System.out.println("3 rooms are cleaned");
}
}
}