2010-12-08 2 views
1

이 문제가 발생하여 만족스럽지 못했습니다. 자바, 다음 줄을 고려해메서드의 반환 값을 때때로 사용할 필요가없는 이유는 무엇입니까?

ListBox.getValue(ListBox.getSelectedIndex())

getValue() 방법은 문자열을 반환하지만 내가

반환 값이 저장

String foo = ListBox.getValue(ListBox.getSelectedIndex())

로 작성하지 않았습니다.

첫 번째 경우와 같이 문을 작성해도 경고가 표시되지 않으며 오류가 발생하지 않는 이유는 무엇입니까?

답변

1

함수는 반환 값과 부작용을 가질 수 있습니다. 어떤 순진 주의자들은 이것을 좋아하지 않지만 그것이 그대로있는 방법입니다.

부작용에만 관심이 있지만 반환 값에 관심이 없다면 어디든지 반환 값을 저장할 필요가 없습니다. ("부작용"은 함수 호출이 상태를 변경시키는 곳입니다).

가비지 수집되는 Java와 같은 언어에서 반환 된 String은 정리가 실제로 발생할 때 결정적이지는 않지만 가비지 수집 가능합니다. C++에서 객체를 "임시"(예 : std :: string)로 반환하면 객체는 호출 직후에 삭제됩니다 (참조의 수명에 해당하는 const 참조에 바인드 할 수는 있지만 레퍼런스가 객체의 수명을 늘릴 수있는 경우에 대한 드문 예외).

+0

오크, 그 이유는 기능적인 언어 뒤에있는 모든 소란과 과대 광고입니다. – theTuxRacer

3

반환 값은 변수에 할당되지 않으므로 "손실"됩니다.

때로는 부작용을위한 함수를 호출하기 때문에 반환 값에 관심이 없으므로 경고가 표시되지 않습니다.

1

특정 코드 검사 : 나는 자바 GUI의 익숙하지 해요,하지만 목록 상자가 같은 센티넬 값을 반환하는 경우에 선택된 인덱스를 가지고하지 않을 수 상상

ListBox.getValue(ListBox.getSelectedIndex()) 

을 - 1. ListBox.getValue (-1)를 호출하면 어떻게됩니까? 야생 추측 : 예외가 발생할 수 있습니다. 그래서, 아마이 코드는 "목록 상자에서 선택이 이루어지지 않았다면 예외를 던지면 (다른 곳으로 옮기고 싶다)"라고 효과적으로 말할 것입니다.

관련 문제