所以我有一个名为Item的对象数组,我想用每个循环来检查这个数组。
private ArrayList carriedItems;
/**
* this private helper method checks the ArrayList for the requested Item name. If found, return the Item.
* If not found, return null.
* @param the name of the item
* @return the item object
*/
public Item cherForItem(String name){
for(Item i: carriedItems)
if(name.compareTo(i.getName())==0)
return i;
return null;
}
当我编译时,我得到一个不兼容的类型:java.lang.Object无法转换为Item。我知道这意味着它期待一个Item对象,但我认为每个循环中的最后一个单词是你正在经历的事情的数组?我很困惑。
答案 0 :(得分:8)
你应该像这样定义你的arraylist:
private ArrayList<Item> carriedItems;
您没有指定您的arraylist将持有的数据类型......
答案 1 :(得分:0)
你应该使用泛型。
private ArrayList<Item> carriedItems;
public Item getItem(){
// your code
}
泛型是为了解决这些问题。
答案 2 :(得分:0)
正如brso05指出的那样,你必须使用模板括号指定ArrayList内容的数据类型(否则内容将被转换为Java.Lang.Object)
在声明ArrayList变量carryItems时指定类型,你应该没问题:
private ArrayList<Item> carriedItems;
/**
* this private helper method checks the ArrayList for the requested Item name. If found, return the Item.
* If not found, return null.
* @param the name of the item
* @return the item object
*/
public Item cherForItem(String name){
for(Item i: carriedItems)
if(name.compareTo(i.getName())==0)
return i;
return null;
}