在类中共享相同值的Java

在类中共享相同值的Java,java,arraylist,Java,Arraylist,我有一个名为Hand的类和另一个类来测试它。 Hand使用全局变量并通过某些方法更改其值 如果在类内测试,我将创建Hand类的两个变量 其中一个变量的更改将影响另一个变量。我怎么能 把他们分开 类手动: private static List<Card> hand = new ArrayList<Card>(); 如果我向hand1arraylist添加值,它也会更改hand2arraylist的值。 我可以将它们分开吗?删除静态修饰符,该修饰符对于在特定类加载器中加载

我有一个名为
Hand
的类和另一个类来测试它。
Hand
使用全局变量并通过某些方法更改其值 如果在类内测试,我将创建
Hand
类的两个变量 其中一个变量的更改将影响另一个变量。我怎么能 把他们分开

手动

private static List<Card> hand = new ArrayList<Card>();
如果我向
hand1
arraylist添加值,它也会更改
hand2
arraylist的值。
我可以将它们分开吗?

删除
静态
修饰符,该修饰符对于在特定类加载器中加载的类的所有实例都是通用的。

私有静态列表
转换为
私有列表

使
私有列表手动=新建ArrayList()作为实例变量,而不是将其设为静态。

因为静态是类的属性,实例变量是对象的属性。。。这对于不同的对象是不同的,但对于静态对象,它们是相同的

关键字
static
使变量类的作用域为,而不是实例的作用域。这意味着相同的值对于类的所有实例都是通用的。非静态成员是类的每个实例所特有的。删除
static
关键字,您将获得所需的行为

        Hand hand1 = new Hand();
        Hand hand2 = new Hand();