package com.javarush.task.task14.task1415;
import java.util.ArrayList;
import java.util.List;
/*
Клининговый центр
*/
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) {
//написать тут вашу реализацию пунктов 1-4
for (Apartment apartment :
apartments) {
/*String name = apartment.getClass().getSimpleName();
switch (name){
case "OneRoomApt":
((OneRoomApt)apartment).clean1Room();
break;
case "TwoRoomApt":
((TwoRoomApt)apartment).clean2Rooms();
break;
case "ThreeRoomApt":
((ThreeRoomApt)apartment).clean3Rooms();
break;
}*/
}
}
static 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");
}
}
}enot
4 уровень
Задача решена, правильный код сюда по правилам не выкладываю. Вопрос вот в чем: почему нельзя было решить через switch, используя имя класса?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
18 марта 2021, 21:40решение
Потому что совпадение имени еще не гарантирует совпадения класса.
В больших проектах и при использовании дополнительных библиотек вполне может случиться так, что имя класса совпадает, хотя это совсем разные классы из разных пакетов.
Например, ты можешь посмотреть, что выведет этот код:
И если ты добавишь в цикл, к примеру, такие строчки
программа упадет.
+2
enot
18 марта 2021, 21:55
Понятно, спасибо!))
0