- 객체의 선언하는 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());
}
'java' 카테고리의 다른 글
생성자 레퍼런스를 사용하면서 몰랐던 사실. (1) | 2020.02.01 |
---|---|
객체의 가시성 수정자는 어떻게 작동하는가? (0) | 2017.11.15 |
자바에서 객체란 무엇인가? (0) | 2017.11.15 |
왜 Integer.MIN_VALUES에 대응하는 양수가 없는가? (0) | 2017.11.15 |
몇 가지 자바 원시 타입의 이름을 지정하고 이 타입이 JVM에서 어떻게 처리되는지 설명 (0) | 2017.11.15 |