2013-07-06 3 views
-2

В java, я пытаюсь заполнить список кучей разных объектов. Но происходит то, что каждый раз, когда я добавляю еще один объект в список, все объекты в списке превращаются в одно и то же.Почему все значения в моем списке одинаковы?

Код в вопросе:

private static ArrayList<Card> deck = new ArrayList<Card>(); 

private static void setupDeck(){ 
    for(int i = 0; i < suits; i++){ 
     for(int j = 0; j < cards; j++){ 
      deck.add(new Card(i,j)); 
     } 

    } 

} 

Когда

deck.add(new Card(i,j)); 

вызывается когда объект уже находится в моем списке становится превращена в дубликате последнего объекта, чтобы добавить в список. Я получаю, что передаю объекты по ссылке, но я не понимаю, почему. Не должно быть сделано мое заявление от

new Card(i,j) 

создать новый объект Карты для хранения. Как я могу решить эту проблему?

+0

Что вы подразумеваете под _in моим списком, превращается в дубликат последнего объекта, чтобы добавить его в список_? –

+1

Он должен и не создает новый объект Карты, здесь что-то не так, я думаю, это ваше наблюдение, что именно не так? – luk2302

+5

Возможно, что-то объявлено статическим, что не должно быть ... Показать код класса «Карта». – user000001

ответ

1

Вы, кажется, чрезмерно используете «статические». Если поле объявлено статическим, все экземпляры класса имеют одну и ту же копию и, следовательно, одно и то же значение. Убедитесь, что поля, которые вы просматриваете в классе карты, объявлены «статическими», и если удалите их.

+0

Да, это было. – Moniker

Смежные вопросы