我有一个名为Hand
的类和另一个测试它的类。
Hand
使用全局变量并使用某些方法更改其值
如果在类测试中我创建了Hand
类的两个变量
其中一个变量的变化会影响另一个变量。我怎么能够
让它们分开?
班级Hand
:
private static List<Card> hand = new ArrayList<Card>();
班级Test
:
Hand hand1 = new Hand();
Hand hand2 = new Hand();
如果我向hand1
arraylist添加值,它也会更改hand2
arraylist的值。
我可以将它们分开吗?
答案 0 :(得分:1)
删除static
修饰符,该修饰符对于特定类加载器中加载的类的所有实例都是通用的。
答案 1 :(得分:1)
static
关键字使变量成为类范围,而不是实例范围。这意味着相同的值对于类的所有实例都是通用的。非静态成员特定于该类的每个实例。删除static
关键字,您将获得所需的行为。
答案 2 :(得分:0)
将private static List<Card>
变为private List<Card>
。
答案 3 :(得分:0)
将private List<Card> hand = new ArrayList<Card>();
设为实例变量,而不是将其设为静态
Coz static是类的属性,实例变量是Object的属性...对于不同的Object是不同的。但是在静态的情况下它们对于所有对象都是相同的。