코쿼_학습일지_D44

VANS·2022년 3월 10일
0

마스터 클래스때, id를 long을 어떤 이유로 쓰냐는 질문에 멍떄렸다.
사실 long 타입으로 선언하면서도 int형으로도 충분하지 않나? 라는 생각이 들었었다.

long타입으로 하는 이유를 몇몇 멤버들이 말씀을하셨는데 이해가 되질 않아 와닿지 않았다. 그리고 user인스턴스를 map으로 받는 이유도 왜 필요한지 모르겠다.

list로 바꿔보자

흠.. 바꾸고 각 서비스별 테스트랑 localHost:8080페이지도 정상작동하는것을 확인했는데
인텔리제이가 자꾸 store을 final로 바꾸라고 추천한다.
list는 가변적으로 바뀌는걸로 아는데 왜 final로 바꾸라고 하지?
일단 바꿔보고 테스트를 돌려보자

테스트도 모두 통과했다. 뭐지?!
list를 final로 선언하는 의미가 내가 아는거랑 다른거일수도 있다.
정리해보자

list 앞에 final이 붙는 의미는?

  1. final 상수 = 바꿀수 없는 상수를 뜻한다.
  2. final 객체 = 바꿀수 없는 상수를 뜻한다.
  3. final List<> store = new ArrayList<>(); 의 경우, store는 ArrayList 값을 가지고 있는것이 아니다.
  4. ArrayList 객체의 주소값을 참조하고 있는것이다.
  5. final List<> store은 final로 ArrayList 객체의 주소값 변경이 불가하게 해주는 의미이다.
  6. 즉, 아래와 같이 new를 사용하여 다시 정의하는것이 불가하게 되는것이다.
profile
코딩도 점진적 과부화

0개의 댓글