0

我需要在一个循环中创建多个对象。我在别处读到将它们添加到列表中可以完成此任务,但下面的代码为我提供了同一对象的一组副本,即全部具有相同的值。知道如何创建多个对象,而不仅仅是同一个对象的副本吗?谢谢你。

(下面的代码是我正在处理的简化版本)

    System.out.println("Creating swarm of size "+swarmSize);
    List<Dog> myDogs = new ArrayList<Dog>();

    for(int i = 0; i < dogAmount; i++) {
        System.out.println("New Dog # "+i);
        myDogs.add(new Dog(i));
    }

    Dog first = myDogs.get(0);
    Dog other = myDogs.get(3);
    System.out.println(first.getID()+" "+other.getID());
    //prints out the number of dogs I should have created -1 both times

我的狗班

import java.util.*;

public class Dog{
    public static int dogID;

    public Dog(int ID) {
        dogID = ID;
    }

    public int getID() {
    return dogID;
    }

    public void setID(int id) {
        dogID = id;     
    }
}
4

2 回答 2

5

改变

public static int dogID;

public int dogID;

或者更好,

private int dogID;

因为你有一个 getter 函数,所以其他类不需要直接访问该字段。

于 2013-05-05T03:53:35.663 回答
1

您正在使用:

public static int dogID;         //STATIC is the issue

这意味着所有的狗都有相同的 dogID,尝试删除“静态”,它会起作用。(每只狗都有一个唯一的 ID)。

于 2013-05-05T03:55:41.720 回答