У меня есть класса в Java, который имеет перечисление реализует интерфейс , такие какПереопределение перечисления в Java
class MyClass{
interface Command{
void execute();
String getId();
}
enum MyCommands implements Command{
aCmd{
void execute(){/*do something*/}
String getId(){return "aCmd";}
}
}
void MyMethod(String s){
for(Command cmd: MyCommands){
if(s.equals(cmd.getId())) cmd.execute();
}
}
}
Класс имеет метод для разбора текста, в котором я перебирать значения перечислены и сравнить их с getId() каждой команды.
Теперь я хочу расширить класс с помощью различных команд (то есть, я хочу расширить его таким образом, чтобы переопределять MyCommands и определять новые команды). Как я могу это сделать? (Я открыт для рефакторинга супер класса в другом простом способе)
class childClass extends myClass{
//In myMethod this enum should be iterated instead of myCommands
enum childCommands implements Command{
otherCmd{
void execute(){/*do something*/}
String getId(){return "aCmd";}
}
}
Если по '" расширить класс "' вы имеете в виду создать новое перечисление, которое расширяет этот, то вы не можете этого сделать. –
@MaartenBodewes Я имею в виду, я хочу создать новый класс, который расширяет мой класс, поведение - это точно то же самое, но имеет разные команды. – Jsevillamol
Почему? Что за дизайн этого требования? – Kayaman