-1
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 中的最后一个元素)。在调试时我明白,每次迭代每行的值都会改变当前行的值。你能为此提出一个解决方案吗?

4

2 回答 2

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());
        }
    }
于 2013-03-19T06:47:06.063 回答
0

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

服务器列表、主机、服务器、信息列表、AbcInformation

于 2013-03-21T10:02:39.773 回答