gpt4 book ai didi

java - 如何指定集合文字的目标类型?

转载 作者:行者123 更新时间:2023-12-02 03:30:11 25 4
gpt4 key购买 nike

我正在尝试使用目标类型来指定集合文字的类型:

val java.util.HashMap<String,String> map = #{
'a' -> 'b'
}

但我得到:

HelloWorld.java:212: error: incompatible types: Set<Object> cannot be converted to HashMap<String,String>
final HashMap<String, String> map = Collections.<Object>unmodifiableSet(CollectionLiterals.<Object>newHashSet(_mappedTo, _mappedTo_1, _mappedTo_2, _mappedTo_3));

请注意,这是一个 java 编译错误,而不是 Xtend 错误。由于某种原因,即使目标类型是 HashMap,Xtend 仍尝试生成 Set

但是,如果我将目标类型更改为 Map,它会按预期生成 map 。

Xtend docs

In addition xtend supports collection literals to create immutable collections and arrays, depending on the target type

所以我认为我可以控制我返回的不可修改 map 的类型。

Xtend版本:2.9.0

最佳答案

你不能按照你想要的方式去做 - 隐式转换不会为你改变映射文字的类型(你得到的错误是编译器工件 - 它会在成对的集合和映射文字之间混淆)。你可以做的是

val map = Maps.newHashMap(#{
'a' -> 'b'
})

这可能会减少输入;) map 来自 com.google.common.collect,您将在依赖项中与 xtend 一起获取它。

关于java - 如何指定集合文字的目标类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38208367/

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