2013-03-19 4 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 클래스의 배열을 생성합니다. 루프에 대한 serversArray 어레이의 모든 값이 동일하다 후 예를 들어,자바 객체 생성

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

} 

우리의 문제는 (XML에서 마지막 원소가 될 수있다)이다. 디버깅하는 동안 모든 반복마다 모든 행의 값이 현재 행의 값으로 변경된다는 것을 이해합니다. 이것을위한 해결책을 제시 할 수 있습니까?

+4

그것을해야하지 다음 클래스에 대한 복사 생성자를 추가했습니다; ? –

+0

새 개체를 모든 요소에 할당 할 때 결과는 동일합니다. – Ankit

+0

'ServersList' 객체를 채울 코드를 게시해야합니다. – Azodious

답변

0

마지막으로 해결책을 찾았습니다. 나는 serversArray [인덱스] 새로운 ServersList을() =

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 서버 = 새 서버(); \t \t infoList = 새 InfoList(); \t}'하지만 안돼 .. – developerXXX