我想将一个值someValue, 传递到这个 Map 中。并想知道是否有办法做到这一点。\n这个想法是调用getData.get("code")(someValue)它会调用一个函数并传入正确的值。
private static final Map<String, String> getData = Map.ofEntries(\n Map.entry("code", someSearch.getCode(someValue)),\xe2\x80\xa8\n Map.entry("foo", someSearch.bar(anotherValue)\n);\n\n\ngetData.get("code");\n\nRun Code Online (Sandbox Code Playgroud)\n
您可以使用该Function类型将函数用作变量,然后将函数实例存储在可以动态检索和调用的映射中。例如:
import java.util.*;
import java.util.function.Function;
class Main {
public static void main(String args[]) {
// Using method references
Map<String, Function<String, String>> map = Map.ofEntries(
Map.entry("a", Main::a),
Map.entry("b", Main::b)
);
// Alternatively, using lambdas
// Map<String, Function<String, String>> map = Map.ofEntries(
// Map.entry("a", (s) -> s + "a"),
// Map.entry("b", (s) -> s + "b")
// );
System.out.println(map.get("a").apply("test"));
}
public static String a(String s) {
return s + "a";
}
public static String b(String s) {
return s + "b";
}
}
Run Code Online (Sandbox Code Playgroud)