2013-06-27 2 views
0

Im는 Eclipse에서 일부 디버깅을 시도하지만 디버거가 나에게 거짓말하는 것처럼 보입니다. 함수라는 Map<String, NormalizedFunction> 있습니다. 내 브레이크 포인트를 때 변수 함수를 볼 수 있습니다. 변수보기에서 선택하면 "{getX()=[]int getX()}"이 표시됩니다. 분명히이 맵은 키와 값을 가지고 있습니다. 그러나, 함수 변수를 열고 keyset 또는 values을 선택하면 이클립스는 null을 말합니다. 키와 값이 있음을 명확하게 보여 주며 코드가 올바르게 실행되면 어떻게 될 수 있습니까?일식 디버거가 잘못된 정보를 표시합니까?

답변

1

디버거가 거짓말 중입니다. 지도의 모든 키가 HashMap의 전용 keySet 필드에 저장되어야한다고 가정합니다. 그러나 이것은 사실이 아닙니다. 이 변수는 keySet() 메서드가 호출 될 때 lazily populated됩니다. 메소드 구현을 살펴보십시오. 당신이 당신의지도에 대해 뭔가를 알고 싶다면

, 그 문서화, 지정된 API를 사용하십시오 디스플레이보기 입력 functions.keySet()를 사용, 마우스 오른쪽 버튼으로 클릭하고 "평가"를 선택하고 당신은 정말 키 세트를 얻을 수 있습니다 지도의

+0

감사합니다. 결코 알지 못했습니다. –

관련 문제