2013-03-19 2 views
-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. Например,создание java-объекта

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()); 

} 

Наша проблема после того, как цикл все значения массива serversArray будет таким же (может быть с последним элементом в XML). Во время отладки я понимаю, что при каждой итерации значение каждой строки меняет значения текущей строки. Можете ли вы предложить решение для этого?

+4

Если не было бы serversArray [индекс] = новый ServersList(); ? –

+0

, поскольку вы назначаете новый объект каждому элементу, результат будет таким же. – Ankit

+0

вы также должны указать код, в котором вы заполняете объект 'ServersList'. – Azodious

ответ

0

Наконец-то я нашел решение. Я добавил конструкторы копирования для следующих классов

ServersList, хост, сервер, Infolist, AbcInformation

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()); 
     } 
    } 
+0

Я пробовал этот путь. Но не решил мою проблему .. – developerXXX

+0

Я добавил в класс ServersList следующий класс: \t 'public ServersList() { \t \t host = new Host(); \t \t server = new Server(); \t \t infoList = new InfoList(); \t} 'Но никак .. – developerXXX

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