함수 인수를 최종적으로 선언하는 이유는 무엇입니까?
저는 현재 Sams에서 발행 한 "Teach Yourself Android Application Development in 24 Hours"책을 읽고 있습니다. 저는 비교적 Java, Android 또는 기타에 익숙하지 않습니다. 저는 ActionScript 3에 대한 매우 견고한 배경 지식을 가지고 있습니다. Java와 충분히 유사하여 언어 자체가 이해하기 어렵지 않지만 책에있는 일부 코드 샘플의 근거에 대해 여전히 질문이 있습니다. 예를 들어, 다음은 Hour 9에 대한 샘플 코드와 함께 제공되는 함수입니다.
private void processScores(final TableLayout scoreTable,
XmlResourceParser scores) throws IOException, XmlPullParserException{
이 함수 서명에서 작성자는 scoreTable 인수를 final로 선언했습니다. 나는 그들이 왜 이것을했는지에 대해 약간 의아해합니다. 함수 인수 scoreTable에 새 값을 할당하려고 시도하는 것도 내 마음에 들지 않을 것입니다 (ActionScript에서는 나쁜 관행으로 간주 됨). 또한 내가 조사했거나 AS3로 포팅 한 실제 Java에서 실제로이 작업을 수행하는 사람을 본 적이 없습니다.
때때로 특정 함수 인수를 최종적으로 선언해야하는 Android 개발에 대한 특정 사항이 있습니까?
TableLayout 개체가 final로 선언되었지만 XmlResourceParser가 아닌 이유는 무엇입니까?
인수를 표시하려는 두 가지 주요 이유가 있습니다 final
. 먼저 익명의 내부 클래스에서 인수를 사용할 계획이라면 final
해당 클래스에서 참조 할 수 있도록 표시해야합니다 . 이것은 실제로 인수를 final로 표시하는 매우 일반적인 사용 사례입니다.
인수를 표시하는 또 다른 일반적인 이유 final
는 실수로 인수 를 덮어 쓰지 않도록하는 것입니다. 당신이 정말로 인수를 변경하지 않는 경우, 아마 당신은 해야 을 표시 final
당신이 실제로 할 경우 오히려 코드가 버그가 있음을 런타임에 알아내는 것보다 컴파일시 오류가 발생합니다 있도록.
참조 URL : https://stackoverflow.com/questions/4930114/why-declare-a-function-argument-to-be-final
'IT TIP' 카테고리의 다른 글
C # 4.0 app.config에서 섹션을 어떻게 사용합니까? (0) | 2020.12.30 |
---|---|
프로그래밍 방식으로 IIS Express 시작 및 중지 (0) | 2020.12.30 |
SQL Server 기본 문자 인코딩 (0) | 2020.12.29 |
Git 저장소 외부에서`git diff --color-words`를 사용하는 방법은 무엇입니까? (0) | 2020.12.29 |
더하기 기호 쿼리 문자열 (0) | 2020.12.29 |