我正在名为 Inventory 的类中创建一个数组列表。这里有添加、删除和获取列表的方法。我在一个名为 Combat 的新类中创建一个新的数组列表,并使用 get 方法将此数组列表设置为 Inventory 类中的数组列表。
这是库存类部分:
private ArrayList<String> inventory;
public Inventory() {
this.inventory = new ArrayList<>();
}
public void addToInventory(String item) {
inventory.add(item);
System.out.println("A " + item + " has been added to your inventory");
printInventory();
}
public void removeFromInventory(String item) {
inventory.remove(item);
}
public ArrayList<String> getInventory() {
return inventory;
}
这是在战斗类(class)中:
private Inventory inventory = new Inventory();
private ArrayList<String> playerInventory = inventory.getInventory();
public Combat() {
}
@Override
public void setPlayerHit() {
System.out.println(playerInventory);
当我调用 print playerInventory 行时,arrayList 返回 []。然而,在库存类中,当我向其中添加项目时,它会在启动器类中显示:
playerInventory.addToInventory(item.getItem(9));
我可以使用公共(public)字段来实现此功能,但想利用封装并使用 getter 和 setter。请问我可以得到一些指示吗?
最佳答案
只是在这里猜测,但听起来您在代码的不同部分使用单独的 Inventory
对象。它们不会共享相同的内部 inventory
数组列表,并且添加到一个 Inventory
对象中的项目不会出现在另一个中。确保您正在打印的 Inventory
对象与您添加项目的对象相同。
如果您想要一个全局 Inventory
对象,您可以使用单例:
public class Inventory {
private static Inventory instance = new Inventory();
private ArrayList<String> inventory;
public static Inventory getInstance() {
return instance;
}
// private constructor to prevent extra copies of the inventory
private Inventory() {
inventory = new ArrayList<>();
}
...
}
关于Java - ArrayList 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43393196/