본문 바로가기

java

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

 - 객체의 선언하는 final 키워드는 원시 타입에 선언하는 final 키워드와 동일한 역할을 한다.

 - 변수 정의에서 지정된 값처럼 일단 할당이 되고 나면 메모리 위치가 변경되지 않는다.

 -  객체 참조는 변경할 수 없어도 객체 내부의 값들은 개별 값들은 개별 값들이 final 이 아니라면 변경 가능하다.

 

@Test
public void finalReferenceChanges() {
final int i = 42;
//i= 43; 주석 해제시 컴파일 에러

final List<String> list = new ArrayList<>(20);
//list = new ArrayList<>(50); 주석 해제 시 컴파일 에러

assertEquals(0, list.size());

list.add("adding a new value into my list");
assertEquals(1, list.size());

list.clear();
assertEquals(0, list.size());
}