더북(TheBook)

2.3.6 최종 인스턴스 변수


인스턴스 변수를 최종(final)으로 선언할 수 있다. 최종으로 선언한 변수는 생성자 실행이 끝나기 전에 초기화해야 한다. 초기화한 후에는 해당 변수를 수정할 수 없다. 예를 들어 Employee 클래스의 name 변수는 객체를 생성한 후에는 절대 변하지 않으므로(setName 메서드가 없다) final로 선언할 수 있다.

public class Employee {

    private final String name;

    ...

}


Note ≣

변경 가능한 객체를 가리키는 참조에 사용하면 final 제어자는 그저 참조 자체가 절대로 변하지 않는다는 사실만 나타낸다. 따라서 객체의 내용을 변경하는 것은 완전히 합법적이다.


public class Person {

    private final ArrayList<Person> friends = new ArrayList<>();

        // 이 배열 리스트에 요소를 추가하는 것은 괜찮다.

    ...

}


메서드에서 friends가 참조하는 배열 리스트를 변경할 수 있지만, 다른 객체로는 절대 교체할 수 없다. 특히 이 참조를 null로 설정할 수 없다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.