본문 바로가기
Language/자바

final 키워드는 객체 참조에 어떤 영향을 미치는가?

by 띵커베르 2023. 2. 14.
728x90
  • 객체를 선언하는 final 키워드는 원시 타입에 선언하는 final 키워드와 동일한 역할을 한다.
  • 변수 정의에서 지정된 값처럼 일단 할당이 되고 나면 메모리 위치가 변경되지 않는다.
  • 원시 타입과 객체의 변수 정의와 메모리 할당은 전혀 다른 형태로 이루어진다.
  • 객체 참조는 변경할 수 없어도 객체 내부의 값들은 개별 값들이 final 이 아니라면 변경할 수 있다.
    @Test
    void finalReferenceChanges() {
        final int i = 42;
        //i = 43 error

        final List<String> list = new ArrayList<>();
        //list = new ArrayList<>(); error
        assertThat(0).isEqualTo(list.size());

        list.add("adding a new value into my list");
        assertThat(1).isEqualTo(list.size());

        list.clear();
        assertThat(0).isEqualTo(list.size());
    }
728x90

댓글