我的代码如下:
player a=new player(4,10,2,3,"You",'@');
player b=new player(4,10,12,3,"Him",'@');
a.pickUp(new weapon("Lightsaber",true,1,1));
System.out.println(a.getPlayerInventory()[0]);
System.out.println(b.getPlayerInventory()[0]);
但是,此时此代码的输出告诉我B的库存内容还包括光剑。 (与玩家A相同的对象。)
在java中出现这种情况的原因有哪些?它是否与其他方法是静态的还是公共的/私有的有关?
我确实尝试使用谷歌搜索,但找不到任何东西(可能是因为我不知道这个问题叫什么。)
感谢您提供任何帮助。
答案 0 :(得分:3)
如果您将玩家的库存设为静态,那么如果A获得光剑,则每个玩家将拥有相同的光剑
答案 1 :(得分:1)
没有看到player
类的实现,我无法肯定地说,但最可能的解释是包含播放器库存的数组被声明为static
,这意味着所有实例该类将共享数组。