private final Map<Long, Member> store = new HashMap<>();
위와 같은 코드가 있다고 했을 때, store가 가리키는 실제 데이터들이 바뀌면 안된다고 잘못 생각하고 있었다.
원시 타입 변수의 경우 값이 스택에 저장되고, 객체 타입은 주소는 스택에 값은 힙에 저장된다.
store가 무엇을 가리키는지 즉, 가리키는 주소가 바뀌면 안된다는 것이지 힙 안의 값이 바뀌는 것은 상관이 없다.
힙 안의 값도 불변이길 원한다면 Collections.unmodifiableMap() 를 이용해보자.
final을 값이 변하지 않는다고 이해하지 말고, 한번만 할당할 수 있다고 이해하자.
'이론 > Java' 카테고리의 다른 글
BufferedReader, BufferedWriter 사용 후 close 해야하는 이유 (0) | 2022.11.22 |
---|---|
상수와 static final (0) | 2022.11.22 |
java.lang 패키지 / 오토 박싱/ 오토 언박싱 (0) | 2021.07.28 |
Java Object 클래스 (0) | 2021.07.27 |
Java 콘솔 입출력(I/O) (0) | 2021.07.14 |