How to make an auto-adding command with interface?

Viewed 32

I'm coding something like cmd in java, so I made a few commands like (hello world), , etc. All the commands are classes that implement the interface (I named it as "API"), but to identify which command is written, I use the "if" expression, so to add the new command (class), I have to write this expression every time, for instance: if (command.equals("print")){return new Print();} Well, that's the question, how can I write an expression once to make java identify a new command (class), no matter how much I add? Thanks in advance; That's the code:

This interface helps the program identify which command is written:

public interface UI {
    API get();

    Function<String, UI> check = command -> {
        if (command.equals("print")){return new Print();}
        if (command.equals("change")){return new Change();}
        if (command.equals("exit")){return new Exit();}
        
        return new NotFound();
    };

    static UI of(String command){
        return check.apply(command);
    }
}

An example of a class:

public class Print extends Backend implements API, UI{

    @Override
    public boolean command() {
        System.out.println(string);
        return true;
    }

    @Override
    public API get() {
        return new Print();
    }
}



public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean run = true;
        while (run) {
            System.out.print("Java> ");
            //UI
            UI command = UI.of(scanner.next());

            API com = command.get();
            run = com.command();
        }
    }
}
0 Answers
Related