티스토리 뷰
개발하면서 깃허브 코드를 참고하다보니 가끔씩 함수의 파라미터에 final 키워드가 들어가는 것을 확인했습니다.
왜 사용하는지? 사용하면 어떤 이점이 있는지 알아보겠습니다.
Final은 변경불가능하다는 키워드 입니다.
그렇다면 메소드 파라미터에 사용하는 것은 해당 파라미터가 변경불가능하다는 뜻인데, 어떤 이점이 있을까요?
장점
- 재할당되서 발생할 수 있는 문제는 컴파일 타임에 바로 잡아 줄 수 있습니다.
- 변수의 상태 변화를 추적할 필요가 없으므로 코드가 더 쉽게 읽힙니다.
- 불변성 강조: final 키워드가 붙은 파라미터는 메소드 내에서 수정할 수 없습니다. 이는 코드를 읽는 사람에게 해당 변수가 변경되지 않을 것임을 명확하게 알려줍니다.
그렇다면 Final이 불변성을 의미하는 것일까요?
->아닙니다.
찾아보니, Final 키워드가 변수에 적용될 때, 그 변수는 재할당을 할 수 없는건 맞지만, 해당 객체의 불변성을 의미하는 것이 아닙니다.
1. 재할당 금지
final String str = "hello";
str = "world"; // 컴파일 에러
2. 객체 상태 변경 가능
final List<String> list = new ArrayList<>();
list.add("hello"); // 가능
list.add("world"); // 가능
- final: 변수가 한 번 초기화된 후에는 다른 값으로 재할당할 수 없습니다.
- 불변성: 객체의 상태가 생성 후에 변경되지 않습니다.
따라서 final은 변수 재할당을 금지할 뿐, 객체의 불변성을 보장하지는 않습니다.
반응형
'개발 > Spring & Spring Boot' 카테고리의 다른 글
[Spring] 프록시 객체를 이용하는 이유 (0) | 2023.05.29 |
---|---|
API 응답값으로 MAP을 지양하는이유 (3) | 2022.08.21 |
@WebMvcTest & @AutoConfigureMockMvc (1) | 2022.08.20 |
[Spring] VO & DTO (2) | 2022.05.08 |
[Spring] Packaging - Jar와 War의 차이점 (0) | 2021.12.10 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- lambda
- .NET
- aws
- 개발자
- 프로그래머스
- 프로토콜
- 라우터
- 자바
- ec2
- tcp
- 회고록
- 초보
- 회고
- osi7계층
- 알고리즘
- 네트워크
- Docker
- 계층
- Spring Boot
- java
- 개발
- rds
- 3Way Handshake
- dto
- 스위치
- s3
- SpringBoot
- spring
- 라우팅
- 삽질
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함