是否可以将参数传递到 Java 中的映射中?

adb*_*ads 0 java

我想将一个值someValue, 传递到这个 Map 中。并想知道是否有办法做到这一点。\n这个想法是调用getData.get("code")(someValue)它会调用一个函数并传入正确的值。

\n
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\n
Run Code Online (Sandbox Code Playgroud)\n

Abi*_*n47 5

您可以使用该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)