java - 更新 ArrayList<HashMap<String, ?>>

标签 java android arraylist hashmap

如何更新 ArrayList<HashMap<String, ?>> ? 数量为String

values.get(position).put(KEY_POSITION, quantity);

错误:

The method put(String, capture#11-of ?) in the type HashMap is not applicable for the arguments (String, String)

最佳答案

所以问题与通配符的逻辑有关。通配符的意思是“值类型参数可以是任何东西”,所以 HashMap<String, ?>是有效的,但在这里您无法将字符串值放入其中。

注意: HashMap<String, ?>HashMap<String, ? extends Object> 相同所以 ? 可以是任何类型的类,但 String 不能是任何类型的类。这就是您的错误的原因。

您需要做一些小改变:

HashMap<String, ? super String>

或者按照@user902383的建议直接将1(结果相同)更改为:

HashMap<String, String>

现在它将接受字符串。

1 String 类是最终的(你不能从它扩展) - 因此最好使用 HashMap<String, String>第一种方法是 HashMap<String, ? super String>是“无用的”,因为您无法从 String 类扩展。

关于java - 更新 ArrayList<HashMap<String, ?>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23107181/

相关文章:

java - Swing:延迟启用按钮

java - 在 ListView 中限制项目

java - 100.000 个 vector 的高效比较

android - 无法生成签名的APK- "Execution failed for task ':app:transormClassesWithMultidexlistForRelease'

android - 如何在 Android 中获取 Google+ 好友

C# => JAVA : Filling a static ArrayList on declaration. 可能吗?

java - 如何从内循环中迭代数组列表,每次都会指向下一个地址元素

java - Spring Boot 将 JSON 和简单属性传递给相同的映射

android - fragment 覆盖另一个可以关闭的 fragment 向上滑动

java - 删除两个不同Arraylist之间的公共(public)元素