roomCharacters
是HashMap
个键和值(String
键和Character
个对象)。
我需要从集合中返回一个角色。在调用方法时,我使用Iterator简单地返回它找到的第一个Character。
public Character getCharacter()
{
Iterator<HashMap.Entry<String, Character>> it = roomCharacters.entrySet().iterator();
if (it.hasNext())
{
HashMap.Entry pair = (Map.Entry)it.next();
return pair.getValue();
}
}
但它无法编译:
incompatible types: java.lang.Object cannot be converted to Character
显然,我误解了某些事情或者错过了一步。请告知并解释我出错的地方。
答案 0 :(得分:2)
如果你使用正确的类型参数声明你的pair变量,它将起作用,你可以摆脱额外的演员阵容:
HashMap.Entry<String,Character> pair = it.next();
答案 1 :(得分:1)
您缺少pair
定义中的泛型规范。此外,由于it
是使用泛型指定的,因此请注意,在将next
分配给pair
时,您不需要进行投射:
public Character getCharacter()
{
Iterator<HashMap.Entry<String, Character>> it = roomCharacters.entrySet().iterator();
if (it.hasNext())
{
HashMap.Entry<String, Character> pair = it.next();
return pair.getValue();
}
}