java对象创建

时间:2013-03-19 06:03:47

标签: java object creation

public class ServersList {

    private Host host;
    private Server server;
    private InfoList infoList;
    private List<AbcInformation> abcInformation;

    @XmlElement(name = "Host")
    @JsonProperty("Host")
    public Host getHost() {
        return this.host;
    }

    //Get Set functions for all object
}

我们有上述课程。它包含其他类的一些对象和get / set方法,如上所示。我们正在解析XML文件并创建ServersList类的数组。例如,

ServersList[] serversArray = new ServersList[count];
for (int index = 0; index < count; index++) {
  serversArray[index] = new ServersList();

  serversArray[index].setInfoList(serConfig
            .getInfoList());
  serversArray[index].setHost(serConfig
            .getHost());
  serversArray[index].setServer(serConfig
            .getServer());

  serversArray[index].getHost().setCid(
    listResponse.getHost().get(index).getCid());
  serversArray[index].getHost().setCName(
    listResponse.getHost().get(index).getCname());
  serversArray[index].getHost()
      .setCurrentName(listResponse.getHost().get(index)
     .getCurrentName());
  serversArray[index].getHost().setHostName(listResponse.getHost().
     get(index).getName());
  serversArray[index].getHost().setHostUuid(
     listResponse.getHost().get(index).getId());

}

我们的问题是在for循环之后,serversArray数组的所有值都是相同的(可能与xml中的最后一个元素有关)。在调试时我明白,每次迭代时,每行的值都会改变当前行的值。你能为此建议一个解决方案吗?

2 个答案:

答案 0 :(得分:0)

尝试这样做,应该有用。

public static void main(String[] args) {
        ServersList sList=null;
        int count=10;
        ServersList[] serversArray = new ServersList[count];
        for (int index = 0; index < count; index++) {
          sList = new ServersList();
          sList.setHost(....);
          //..........other setter...........
          serversArray[index] = sList;
        }

        for (ServersList serversList : serversArray) {
            System.out.println(serversList.getHost());
        }
    }

答案 1 :(得分:0)

最后我找到了解决方案。我为以下类添加了复制构造函数

ServersList,Host,Server,InfoList,AbcInformation