код
public interface Command {
public Command[] parseCommand(String command);
}
public enum CameraCommand implements Command {
CLICK;
public Command[] parseCommand(String commands) {
if ("CLICK".equals(commands))
return new Command[] { CameraCommand.CLICK };
return null;
}
}
public enum RoverCommand implements Command {
L,
R,
M;
public Command[] parseCommand(String commandString) {
RoverCommand[] commands = new RoverCommand[commandString.length()];
for (int i = 0; i < commandString.length(); i++) {
switch (commandString.charAt(i)) {
case 'L':
commands[i] = RoverCommand.L;
break;
case 'R':
commands[i] = RoverCommand.R;
break;
case 'M':
commands[i] = RoverCommand.M;
break;
default:
break;
}
}
return commands;
}
}
Я сделал это для группировки типов команд.
Теперь проблема в том, что я получаю команду определенного типа в строке, например, «CLICK». Я не знаю тип, но я хочу сделать это
Machine machine = getMachine(type); //machine is an interface, i pass type and get a typeof machine
//machine.parseCommand(commandString); //i don wish to have this logic inside the machine
Command[] command = Command.parseCommand(commandString); // this didnt work, how to solve this, work around?
machine.execute(command); ///finally pass the command and execute the action
любая помощь будет оценена
спасибо
В