我在名为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;
}
这是在战斗类:
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));
我可以使用公共字段来使用它,但是想要使用封装并使用getter和setter。我可以得到一些指示吗?
答案 0 :(得分:2)
在这里猜测,但听起来你在代码的不同部分使用了单独的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<>();
}
...
}
对象,可以使用单例:
{{1}}
答案 1 :(得分:0)
当我调用print playerInventory行时,arrayList返回[]
您没有在清单中插入任何字符串...因此空列表...
顺便说一下,这是多余的:private ArrayList<String> playerInventory = inventory.getInventory();
因为您正在使用具有ArrayList
的库存对象再次尝试,但在做之前
public Combat() {
inventory.addToInventory("f1");
inventory.addToInventory("f2");
}
现在您的库存对象有2个元素