gpt4 book ai didi

java org.immutables 库 : all duplicate insertion in map

转载 作者:行者123 更新时间:2023-11-30 08:30:04 24 4
gpt4 key购买 nike

我正在使用 java immutables library .

@Value.Immutable 
public interface Foo {
Map<Integer, String> getBar();
}

ImmutableFoo.builder().putBar(1, "asdf").putBar(1, "ghjk").build() 导致重复键错误。有什么办法可以避免这种情况吗?

  • 如果我碰巧遇到具有不同值的同一个键,我想用新值覆盖旧值。
  • 如果我遇到同样的情况具有相同值的键,我想忽略它。

最佳答案

生成的构建器有意这样做是为了防止(实际上是及早发现)意外的错误输入和复制粘贴错误。在这方面,它实际上模仿了 Guava 的 ImmutableMap.Builder 的行为(实际上是在内部使用,并为此错误负责)。

要解决您的问题,处理此问题的最佳方法是创建您自己的 HashMap ,以任何顺序填充它的值以及任意数量的重复/覆盖条目,然后使用 builder.putAllBar(hashMap) 在值对象创建期间应用它并将其转换为不可变映射。

另一种选择是选择不使用 Guava,然后生成的代码将使用常规 HashMap 并将创建包装在 Collection.unmodifiableMap 中的防御性副本用于不可变目的。使用 @Value.Style(jdkOnly = true) 仅使用 JDK 提供的集合(在此处阅读有关样式的更多信息:http://immutables.github.io/style.html)。通过在构建器中使用常规 HashMap ,您将避免重复键错误。

关于java org.immutables 库 : all duplicate insertion in map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477413/

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