gpt4 book ai didi

Java - ArrayList 返回空

转载 作者:行者123 更新时间:2023-12-02 02:53:57 24 4
gpt4 key购买 nike

我正在名为 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/

24 4 0