gpt4 book ai didi

java - lambda 中的控制反转

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:45 25 4
gpt4 key购买 nike

我正在尝试将列表转换为 Map 的键,并且默认值为 null。
然而,我的代码需要通过new关键字创建一个HashMap,这违背了Spring的Inversion of Control原则。

我想知道在这种情况下Spring中是否有正确的方法来初始化 map ?

convertStringToList(input).stream().collect(HashMap::new, 
(map, value) -> map.put(value, null), Map::putAll);

最佳答案

Spring bean Autowiring 与非 Spring 配置组件的特定实现的实例化有点不同。不要害怕 new 关键字和特定的实现。

Map<String, String> newMap = convertStringToList(input).stream().collect(HashMap::new, 
(map, value) -> map.put(value, null), Map::putAll);

这很好,因为您将 Stream 收集到 Map 中,这是一个接口(interface)。 Spring 对在流收集上使用哪个实现没有影响,因此您必须指定 HashMap 将被使用(而不是 TreeMap 例如......) .

如果你这样做......

 Map<String, String> a = b.stream().collect(Map::new, 
(map, value) -> map.put(value, null), Map::putAll);

这里是“无法实例化 Map 类型”——它需要实现,而 Spring 没有责任提供它。

关于java - lambda 中的控制反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com