在循环问题中创建多个对象

时间:2013-05-05 03:48:20

标签: java loops object

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

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

    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;     
    }
}

2 个答案:

答案 0 :(得分:5)

更改

public static int dogID;

public int dogID;

或更好,

private int dogID;

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

答案 1 :(得分:1)

您正在使用:

public static int dogID;         //STATIC is the issue

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