Java - 许多对象的一种方法

时间:2017-12-02 00:10:21

标签: java object arraylist

说我有一个包含500个Item类型自定义对象的Java文件。现在,假设我希望用户能够在程序中将这些对象中的任何一个添加/删除到该列表中。我想尽量避免这样做:

public class Inventory {
    public static ArrayList<Item> inv = new ArrayList<>();
    public static void addItem1 {
        inv.add(Item.Item1); //Pulling from Item class
    } //addItem1()
    public static void removeItem1 {
        inv.remove(Item.Item1);
    } //removeItem1()
    public static void addItem 2 {
        . . .
    }
    . . .
}

通过这样做,我必须为每个项目添加和删除功能。将有数百个项目,所以我真诚地希望用户能够从程序内部更好地完成这些工作。这将是非常糟糕的,因为它需要一些大量的嵌套switch语句来交换所有内容。

相反,我希望实现单个加法器方法和单个移除方法,它们可以接受用户的输入(一个字符串,其字面名称为Item他们正在尝试添加),并以某种方式查找/选择Item。实施思路?

2 个答案:

答案 0 :(得分:2)

使用泛型类怎么样?

public class Inventory<T> {
public static ArrayList<Item> inv = new ArrayList<>();
public void addItem (T item){
    inv.add((Item)item); // where item can be anything from Item.item1 to Item.item500
}
public void removeItem (T item){
    inv.remove((Item)item);
}

在这种情况下,要查看您的商品是否实际上是项目,请执行以下操作:System.out.println(item.getClass().getName()); //should return Item

答案 1 :(得分:0)

也许使用:

public void setItem(Item item){
    inv.add(item);
}

然后使用相同的概念进行删除。