일부 코드를 살펴본 결과 오브젝트에 대한 변경 사항이 실제로 해당 오브젝트 또는 해당 오브젝트의 사본에 작성되었는지 여부를 이해하고 있는지 확인하고자합니다.개체 또는 해당 개체의 복사본을 변경하고 있습니까?
for(int i = 0; i < myList.size(); i++)
{
DataObject myItem = (DataObject)myList.get(i);
myItem.setString("someKey", "someValue");
}
myList에이 데이터 객체의 목록, 그래서 목적이 목록에서 Get() 메서드를 호출 한 후 데이터 객체에 대한 항목을 캐스팅이었다 모르겠어요 :
다음은 샘플입니다. 그러나 이것이 컴파일 될 때 어떻게 처리되는지 궁금합니다. 캐스트가 새로운 객체를 생성 한 다음 setString() 메서드가 새 객체에서 호출되고 목록의 객체에는 영향을주지 않습니까? 또는 myItem이 목록의 실제 항목을 참조하고 있습니까?
감사합니다.
+1 목록에 내부적으로 어떤 작업이 수행되는지 알지 못하는 것에 대한 매우 좋은 점. 불변의 목록 요소를 사용하는 또 다른 이유입니다. – biziclop
오 예, 우리는 모두 이것이 잘 작동하는 List 구현이라고 가정합니다. 그러나 get() 메서드 *는 복사본을 반환 할 수 있습니다. 그러나 그것은 매우 희박합니다. 그러나 형변환 자체는 새로운 객체를 생성하지 않습니다. 잘 했어. –
좋은 지적! 필자가 언급 했어야 할 것은'myList'는 코드에서'DataObject' 유형의 객체에 대해 getList() 메소드를 호출함으로써 이전에 선언되었습니다. – Poosh