0

我一直在努力弄清楚如何返回一个对象。

我有以下对象数组。

ArrayList<Object> favourites;

我想根据它的“描述”属性在数组中找到一个对象。

public Item finditem(String description) {

for (Object x : favourites) {
   if(description.equals(x.getDescription())) {
      return Object x;
   else {
      return null;

有人可以告诉我如何编写这段代码。谢谢。

4

3 回答 3

3

使用泛型:

ArrayList<Item> favourites;

public Item finditem(String description) {

  for (Item x : favourites)
    if(description.equals(x.getDescription()))
      return x;

  return null;
}

或者如果你真的想要一个对象数组,方法的返回类型必须是对象:

public Object findItem(String description)

但看起来您确实希望收藏夹成为项目的数组列表!

于 2012-04-11T11:26:24.007 回答
0

您不能在通用对象上调用 getDescription。

您希望 ArrayList 由具有属性描述的特定类型的对象组成。

因为你有你的班级项目:

public class Item {
    private String description;

    public String getDescription(){
        return description;
    }

   ... other methods here
}

现在你可以创建一个这种类型的 ArrayList,例如:

List<Item> myList = new ArrayList<Item>();

并以与您相同的方式对其进行迭代……几乎。

您的迭代代码已损坏,因为您总是只检查第一个元素,如果它不是您要查找的内容,则返回 null,您想要的是:

for (Item x : favourites) {
  if(description.equals(x.getDescription())) {
    return x;

return null;

请注意,这样您将遍历整个列表,并且只有当您到达循环结束时,您才会返回 null。

于 2012-04-11T11:30:15.827 回答
0

ArrayList<Item>或将返回类型更改为Object.

于 2012-04-11T11:30:32.980 回答