我正在尝试创建广告资源跟踪系统。我有一个名为“InventoryItem”的类(在Java中),它具有名称和数量的属性。
这适用于简单对象,但如果我的库存项目包含其他库存项目,例如带RAM的服务器怎么办?
我应该创建自己的数据类型,还是有更好的方法(链接列出可能)?我的类应该扩展该数据类型的任何内容,还是应该不打扰创建自己的类?
到目前为止我的课程:
public class InventoryItem {
private String name;
private int quantity;
private InventoryItem childInventoryItem;
// CONSTRUCTORS
public InventoryItem() {
}
public InventoryItem(int quantity, String name) {
this.quantity = quantity;
this.name = name;
}
//GETTERS
public String getName() {
return name;
}
public int getQuantity() {
return quantity;
}
//SETTERS
public void setName(String name) {
this.name = name;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
答案 0 :(得分:1)
树通常涉及任何亲子关系。如果您没有做任何复杂的事情,您可以简单地维护一个基本上List<InventoryItem>
的内部列表,其中包含任何子项。
所以你要加入你的课程就是这样:
public class InventoryItem {
...
private List<InventoryItem> composingItems = new ArrayList<>(); //if still using Java 6 this must be new ArrayList<InventoryItem>();
...
public void addComposingItem(InventoryItem composingItem) {
composingItems.add(composingItems);
}
public List<InventoryItem> getComposingItems() {
//Enforce immutability so no one can mess with the collection. However
//this doesn't guarantee immutability for the objects inside the list;
//you will have to enforce that yourself.
return Collections.umodifiableList(composingItems);
}
}
答案 1 :(得分:0)
有很多方法可以做到这一点。我认为最简单的方法是创建一个数组列表。
ArrayList<InventoryItem> childInventory = new ArrayList<InventoryItem>();
然后创建一个将库存项目添加到此数组的setter
public void addChildItem(InventoryItem child)
childInventory.add(child);
这样您就可以获得项目中所有子项的列表。您还可以创建一个方法来返回数组或ArrayList中所有子项的列表。
public ArrayList<InventoryItem> getChildItems()
return childInventory;