编译错误 "incompatible types"
Compile error "incompatible types"
我有编译错误:
Error: incompatible types: Object cannot be converted to String.
第 String buf = it.next();
行
public String getMostFrequentColor() {
HashMap<String, Integer> colors = countColors();
int count = 0;
String mfcolour;
Iterator it = colors.keySet().iterator();
while (it.hasNext()) {
String buf = it.next();
if (colors.get(buf) > count) {
count = colors.get(buf);
mfcolour = buf;
}
}
return mfcolour;
}
我不知道为什么会这样。在我看来,it.next()
应该 return 一个字符串。
使用 Iterator<String>
代替 Iterator
。
Iterator<String> it = colors.keySet().iterator();
Iterator
class中next()
方法的return类型是Object
。由于您知道 HashMap
具有类型为 String
的密钥集,因此您需要将 it.next()
的结果转换为 String
:
String buf = (String) it.next();
您使用的 Iterator
没有通用参数。这意味着它将 return Object
类型。修改其声明(通过将 Iterator it
变为 Iterator<String> it
)或手动转换由 it.next()
.
检索到的对象
后者可能会受到类型安全问题的影响!
尝试转换 String
以防止在编译时出现此问题。编译器给你这个警告只是因为 Java 是一种严格类型的语言。在 运行 的时候,如果不能转换变量,那么你只会 运行 出问题。
String buf = (String) it.next();
或者您可以通过指定要使用的 Iterator
类型使其更具体。这可能是更好的选择。
Iterator<String> it = colors.keySet().iterator();
我有编译错误:
Error: incompatible types: Object cannot be converted to String.
第 String buf = it.next();
public String getMostFrequentColor() {
HashMap<String, Integer> colors = countColors();
int count = 0;
String mfcolour;
Iterator it = colors.keySet().iterator();
while (it.hasNext()) {
String buf = it.next();
if (colors.get(buf) > count) {
count = colors.get(buf);
mfcolour = buf;
}
}
return mfcolour;
}
我不知道为什么会这样。在我看来,it.next()
应该 return 一个字符串。
使用 Iterator<String>
代替 Iterator
。
Iterator<String> it = colors.keySet().iterator();
Iterator
class中next()
方法的return类型是Object
。由于您知道 HashMap
具有类型为 String
的密钥集,因此您需要将 it.next()
的结果转换为 String
:
String buf = (String) it.next();
您使用的 Iterator
没有通用参数。这意味着它将 return Object
类型。修改其声明(通过将 Iterator it
变为 Iterator<String> it
)或手动转换由 it.next()
.
检索到的对象
后者可能会受到类型安全问题的影响!
尝试转换 String
以防止在编译时出现此问题。编译器给你这个警告只是因为 Java 是一种严格类型的语言。在 运行 的时候,如果不能转换变量,那么你只会 运行 出问题。
String buf = (String) it.next();
或者您可以通过指定要使用的 Iterator
类型使其更具体。这可能是更好的选择。
Iterator<String> it = colors.keySet().iterator();