java可以“混淆”同一类的不同实例的原因是什么?

时间:2014-01-26 22:29:26

标签: java class

我的代码如下:

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中出现这种情况的原因有哪些?它是否与其他方法是静态的还是公共的/私有的有关?

我确实尝试使用谷歌搜索,但找不到任何东西(可能是因为我不知道这个问题叫什么。)

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:3)

如果您将玩家的库存设为静态,那么如果A获得光剑,则每个玩家将拥有相同的光剑

答案 1 :(得分:1)

没有看到player类的实现,我无法肯定地说,但最可能的解释是包含播放器库存的数组被声明为static,这意味着所有实例该类将共享数组。