Java, разделяющая одни и те же значения в классе

#java #arraylist

#java #список массивов

Вопрос:

У меня есть вызываемый класс 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.
Могу ли я их разделить?

Ответ №1:

Превратите private static List<Card> в private List<Card> .

Ответ №2:

Сделайте private List<Card> hand = new ArrayList<Card>(); переменную экземпляра as, а затем сделайте ее статической..
Потому что static является свойством класса, а переменные экземпляра являются свойством объекта… который отличается для разных объектов .. но в случае статического они одинаковы для всех объектов..

Ответ №3:

Удалите static модификатор, который является общим для всех экземпляров класса, загруженных в конкретный загрузчик классов.

Ответ №4:

static Ключевое слово делает переменную в области класса, а не в области экземпляра. Это означает, что одно и то же значение является общим для всех экземпляров класса. Нестатический член является специфичным для каждого экземпляра класса. Удалите static ключевое слово, и вы получите желаемое поведение.