2013-09-04 3 views
1

이미 등록 클래스에 채워진 값을 반복하려고합니다. 나는 이미 등록 클래스에 getInstance() 메서드에 중단 점을 넣었습니다. 커서가 루프 코드를 위해 아래에 도달하면.런타임 중에 클래스에서 값이 변경되는 중

for (final Registration.HolderEntry entry : Registration.getInstance()) { 
     // do other things.. 
} 

나는 그것에 대해 F5를 수행합니다. 그리고 나서 그것은 등록 클래스의 getInstance() 메소드로갑니다 (아래는 클래스입니다). 그리고 그 시점에서 instance 변수를 검사 할 때, 나는 항상 listOfBundles 목록에 값이 채워지는 것을 보았습니다.

그러나 F5 키를 계속 누르고 있으면 어떤 시점에서 등록 클래스의 iterator 메서드가 나온 다음 listOfBundles list을 검사하면 그 목록에 어떤 값도 표시되지 않습니다. 왜 이렇게 일어나고 있는지 이해하십시오. listOfBundles의 값을 변경할 수있는 다른 코드는 실행되지 않습니다.

나는 그 질문이 충분히 분명하기를 희망한다. 아무도 내가 여기에 어떤 잘못을 저지를 수 있습니까?

+0

정적 인스턴스는 항상 같은 개체 public static Registration getInstance() 메서드를 반환하기 때문에 사용하십시오. (등록이 초기화되는 경우에만 한 번). 당신의 반복은 다른 객체가 아닙니다. 동일한 객체가 반복을 반복합니다. 모든 객체에 적용하지 않으면 반복하는 동안 u가 변경되지만 동일한 객체이므로 반복하고 값을 변경합니다.
귀하의 실제 요구 사항을 알지 못합니다. 하지만 이것을 사용해보십시오. public static 등록 getInstance() { 새로운 등록() ;; } –

답변

0

당신은 항상

public static Registration getInstance() 

방법에서 동일한 개체를 반환 정적 인스턴스를 사용하기 때문이다. (등록이 초기화되는 경우에만 한 번).

당신의 반복은 다른 개체가 없습니다. 동일한 객체가 반복을 반복합니다. iterate하는 동안 모든 객체에 적용하는 것과 같지 않지만 반복하고 값을 변경하는 것은 동일한 객체입니다.

귀하의 실제 요구 사항을 알지 못합니다. 하지만 이것을 사용해보십시오.

public static Registration getInstance() { 
     return new Registration();; 
    } 
관련 문제