新しいJava 8の機能(ハ)に慣れようとしていますが、コントロールフローの問題があります。次のコードでJava 8 Map <String、Runnable>コントロールフロー
、私はので、私は自分の名前に基づいた方法をMap<String, Runnable>
を呼び出すことができますが、私は2つのことを行う方法を見つけ出すように見えることはできません。
- どのように私はこれらのメソッドを作ることができますパラメータを取る?私。私はマップ "put"で必要な構文は何ですか?
- "Dispatch"の "get"メソッドからこれらのメソッドを呼び出すと、メソッドの戻り値(Status)を返すことができません。これは、メソッドが呼び出されている場所と関係がありますが、トンそれを把握する。状況は、ちょうど列挙し、ToListメソッドメソッドは、単に(これはREPLとして使用されることを意味している)のスペースで区切られた文字列を受け取り、リストを返します。
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;
}
}