так не работает
switch (apartment) {
case OneRoomApt: ((OneRoomApt) apartment).clean1Room();
case TwoRoomApt: ((TwoRoomApt) apartment).clean2Rooms();
case ThreeRoomApt: ((ThreeRoomApt)apartment).clean3Rooms();
Anonymous #2632922
35 уровень
можно ли эту задачу решить с помощью switch -case ?
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
24 мая 2022, 11:24
Я не думаю, что местный валидатор поддерживает 17-ю java, в прочем ваша запись не вполне валидна даже для 17-й.
А в целом, я уже не раз говорил, и говорить буду, что для решения такой задачи в реальном проекте лучше использовать интерфейс с методом cleanRoom(), а в нужных классах его имплементить и не долбить себе мозг с проверками и инстансофами.
Вот так выглядит имплементация здорового человека:
При условии что Apartment это интерфейс с методом cleanRoom и все наши классы его имплементируют.
P.S. Абстрактный класс в прочем тоже подходит, так что тут нужно смотреть что больше подходит в конкретном случае. Например это чисто описание поведения или нужно выносить в абстракцию что-то еще.
+2
hidden #598481
24 мая 2022, 11:12
а что с чем ты здесь сравниваешь, инстанс с классом?
Тогда уж appartment.getClass() и OneRoomApt.class
0
Aleksey
24 мая 2022, 10:14
Я решил с помощью switch, правда использовал другой код:
Но для валидатора не подошло, пришлось через instanceof переделывать. Почему switch не принял, я так и не понял.
0