더북(TheBook)

Note ≣

지역 클래스는 메서드 바깥에서 접근할 수 없으므로 public이나 private으로 선언할 수 없다.8


클래스를 지역 클래스로 만들면 이점이 두 가지 있다. 첫째, 클래스 이름이 메서드의 유효 범위 안으로 숨는다. 둘째, 람다 표현식의 변수처럼 지역 클래스의 메서드 안에서 자신을 감싸는 유효 범위에 속한 변수에 접근할 수 있다.

이 예제에서는 next 메서드가 low, high, generator 변수를 캡처한다. RandomInt를 중첩 클래스로 바꾼다면 이 값들을 받아서 인스턴스 변수에 저장하는 명시적인 생성자를 구현해야 한다(연습문제 16 참고).


8 당연히 protected도 안 된다. 언어 명세에 따라 지역 클래스에는 접근 제어자나 static 제어자를 붙일 수 없다.

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