参考:
何ができるようになるか?:
@Test
public void java_hash_literal() {
Map<String, String> hash = hash(
hello -> "world",
bob -> bob,
bill -> "was here"
);
assertEquals("world", hash.get("hello"));
assertEquals("bob", hash.get("bob"));
assertEquals("was here", hash.get("bill"));
}
public static <T> Map<String, T> hash(NamedValue<T>... keyValuePairs) {
Map<String, T> map = new HashMap<>();
asList(keyValuePairs)
.stream()
.forEach(kvp ->
map.put(
kvp.name(),
kvp.value())
);
return map;
}
なんとなくしか理解してないが、ラムダ式の引数名をリフレクションで取り出せるようになったのを活用して、key -> value をラムダ式に見立てれば、key をラムダ式の引数名として取り出せるよね、それでクールなMapビルダー作れたよ!という話らしい。
まぁ空白とか記号混じりは厳しそうなのである程度制限はあると思うが、アイデアとしては面白い。
・・・まぁ、これ使うくらいならドメイン特化したビルダー作るかもしれないけど・・・。