Specifi c Пример: у меня есть класс Track и класс Track-switch, который расширяет класс track.
class Track {}
class Switch extends Track {
boolean state;
void changeState() {
state = !state;
}
}
У меня есть класс Railway, который привязывает идентификаторы к трекам.
class Railway {
Map<Integer, Track> IDMap = new Hashmap<>();
void changeSwitch(Integer id) {
Track temp = IDMap.get(id);
if (temp instanceof Switch) {
((Switch) temp).changeState();
}
}
}
Как мне избежать использования instanceof и downcasting в моем методе changeSwitch? Я слышал о правиле «говори, не спрашивай», но очень неправильно писать метод в Track, который просто вызывает исключение. (Я намеренно пропустил модификаторы для упрощения)