Ich versuche, mich mit einigen neuen Java 8-Funktionen vertraut zu machen (ha), aber ich habe einige Kontrollfehler.Java 8 Map <String, Runnable> Kontrollfluss
Im folgenden Code habe ich ein Map<String, Runnable>
so kann ich basierend auf ihren Namen Methoden aufrufen, aber ich kann nicht scheinen, um herauszufinden, wie zwei Dinge zu tun:
- Wie kann ich diese Methoden machen Parameter nehmen? I.e. Was ist die Syntax, die ich in der Karte "put" s brauche.
- Wenn ich diese Methoden von der "get" -Methode in "Dispatch" aufrufen, kann ich den Rückgabewert der Methode (Status) nicht zurückgeben. Ich vermute, das hat etwas damit zu tun, wo die Methode aufgerufen wird, aber ich kann ' t es herausfinden. der Status ist nur ein eNUM und die ToList Verfahren dauert nur ein Leerzeichen getrennte Zeichenfolge und gibt eine Liste (dies als REPL verwendet werden soll).
import java.util.*;
public class Dispatcher {
private Map<String, Runnable> func;
private Status status;
private List<String> command;
Optional<List<String>> opt;
public Dispatcher() {
func = new HashMap<>();
func.put("Method1", this::Method1);
func.put("Method2", this::Method2);
func.put("Help", this::Help);
status = Status.DONE;
}
private Status Help() {
return Status.DONE;
}
private Status Method1() {
return Status.DONE;
}
private Status Method2() {
return Status.DONE;
}
/**
* Execute the given command on a new process.
* @param command the full command requested by the caller including command name and arguments.
* @return The status of the requested operation.
*/
public Status Dispatch(String command) {
opt = CommandInterpreter.toList(command);
opt.orElse(new LinkedList<String>(){{add("Help");}});
func.get(opt.get().get(0));
return Status.DONE;
}
}