在使用我制作的对象为每个循环制作一个挣扎

时间:2015-12-07 14:52:07

标签: java arrays foreach

所以我有一个名为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对象,但我认为每个循环中的最后一个单词是你正在经历的事情的数组?我很困惑。

3 个答案:

答案 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;
}