Java разделяет одни и те же значения в классе - PullRequest
0 голосов
/ 28 октября 2011

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

Ответы [ 4 ]

1 голос
/ 28 октября 2011

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

1 голос
/ 28 октября 2011

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

0 голосов
/ 28 октября 2011

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

0 голосов
/ 28 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...