我刚刚将Android Q SDK更新为android studio中的修订版2,现在从哈希图中获取值时出现错误
it是的HashMap<String,String>,这段代码很好,直到我在android studio中更新到Q版本2为止。
这是我的HashMap的来源
val map = HashMap<String,String>()
map["owner"] = shipment.owner
map["current"] = signedInUser
shipmentOwnedLiveData.postValue(map)
Run Code Online (Sandbox Code Playgroud)
我发现了一个与此类似的问题,但与Android无关,并且已有几年历史了
任何人都知道问题是什么或如何解决?
编辑:
似乎它也破坏了ArrayLists,因为调用.contains或.remove对集合也抛出歧义错误。
似乎所有这些方法都有重复的方法
编辑2:
看来我不是唯一遇到此问题的人
例如,FastUtil IntArrayList有一个push接受int(原始)和Integer(盒装)的方法,但Kotlin认为它们都是相同的函数push(Int),因此我根本不能使用该函数,因为函数是模糊的.
当Java库对基本类型和盒装类型都有重载时,我该怎么办?
(ps我知道我可以使用这个add(int)方法.如果我将来遇到这样的问题,我正在寻找该怎么做.)
灵感来自另一个问题.
在fastutil库中有IntArrayList一个类,它有一个带有以下Java签名的方法:
public void push(Integer o)
Run Code Online (Sandbox Code Playgroud)
来自Kotlin,它被视为
push(o: Int)
Run Code Online (Sandbox Code Playgroud)
是否有特定原因Int而不是平台类型Int!?
我预计它push(o: Int!)至少是因为在项目中使用Kotlin源在Java源代码中定义的相同签名的方法具有Int!从Kotlin看到的参数类型(甚至在不同的模块中定义,甚至从该模块的jar中导入!).
此外,所描述的行为导致push(Integer o)与push(int o)具有Int参数合法的(在同一类中)冲突- 它们都被视为push(o: Int).如果有Int!对Integer,就没有冲突(我也试过在我的代码来定义这个对方法-仍然是如我所料,有Int!).
Kotlin版本是1.0.2.
Gradle依赖fastutil:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'
Run Code Online (Sandbox Code Playgroud)