说我有一个包含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
。实施思路?
答案 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);
}
然后使用相同的概念进行删除。