Имя команды и число ее аргументов известны. Зачем вы получаете их как параметры конструктора?
```
public DirCommand() {
    super("dir", 0);
}
```
Для остальных команд аналогично.