在下面的简短代码片段中,Eclipse标记了有关String key = pair.getKey();
和String value = pair.getValue();
语句的错误,并说明了
“类型不匹配:无法转换 对象到字符串“
这是相关代码:
for (Map<String, String> dic : dics) {
Iterator it = dic.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
String key = pair.getKey();
String value = pair.getValue();
}
}
为什么?
到目前为止我看到的所有示例都没有将pair.getKey()或pair.getValue()强制转换为String,所以我想在继续解决之前了解发生了什么。
答案 0 :(得分:11)
试试这个:
for (Map<String, String> dic : dics) {
Iterator<Map.Entry<String, String>> it = dic.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pair = it.next();
String key = pair.getKey();
String value = pair.getValue();
}
}
甚至更好(内部工作是相同的,但这不那么冗长):
for (Map<String, String> dic : dics) {
for(Map.Entry<String, String> pair : dic.entrySet()){
String key = pair.getKey();
String value = pair.getValue();
}
}
答案 1 :(得分:8)
您尚未通过it
或pair
试试这个
for (Map<String, String> dic : dics) {
for (Map.Entry<String, String> pair : dic.entrySet()) {
String key = pair.getKey();
String value = pair.getValue();
}
}
答案 2 :(得分:1)
试试这个:
for (Map<String, String> dic : dics) {
Iterator<Map.Entry<String, String>> it = dic.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> pair = it.next();
String key = pair.getKey();
String value = pair.getValue();
}
}
答案 3 :(得分:1)
基本上,我们的想法是你的迭代器(it)和条目(对)也应该是泛型化的。
Iterator<Entry<String, String>> it = dic.entrySet().iterator();
while (it.hasNext()) {
Entry<String, String> pair = it.next();
String key = pair.getKey();
String value = pair.getValue();
}
答案 4 :(得分:0)
您将Entry
作为原始非参数化类型类型。
使用Entry<String, String>
代替原始Entry
。
答案 5 :(得分:0)
您的Map.Entry声明未按类型参数化。