Java/자바 정리

85. 로컬 클래스(Local Class) – 메서드 안에 클래스가?!

코딩하는냥이 2025. 5. 12. 11:17
반응형

이번 글에서는 로컬 클래스(Local Class) 를 학습합니다.
로컬 클래스는 메서드나 생성자 내부에 선언되는 클래스로,
짧은 범위에서 한정적으로 필요한 클래스를 정의할 때 사용합니다.


📦 클래스 구조 (A.java)

package ch09.sec04.exam01;

public class A {
	A() {
		class B { }     // 생성자 내부 로컬 클래스
		B b = new B();  // 객체 생성
	}

	void method() {
		class B { }     // 메서드 내부 로컬 클래스
		B b = new B();  // 객체 생성
	}
}

📌 핵심 포인트

특징 설명
선언 위치 생성자, 메서드, 초기화 블록 등 내부에서만 선언 가능
접근 제한자 사용 불가 (public, private, static 등 사용 불가능)
사용 범위 선언된 블록 내에서만 사용 가능
외부 클래스 접근 외부 클래스의 멤버(필드, 메서드 등) 접근 가능 (final 또는 effectively final일 경우)

📌 코드 설명

  • class B는 생성자 또는 메서드 내부에 선언됨
  • 이 클래스는 선언된 블록 내부에서만 사용 가능
  • B b = new B();는 같은 블록 내에서 B의 객체를 생성

💻 실행 결과

// 실행 결과 없음 (정상 컴파일 및 객체 생성)

💬 예시 추가: 외부 멤버 접근

public class A {
	int value = 10;

	void method() {
		int local = 5;
		class B {
			void print() {
				System.out.println("value = " + value); // 외부 필드 접근 가능
				System.out.println("local = " + local); // 지역 변수 접근 (final 또는 effectively final)
			}
		}
		B b = new B();
		b.print();
	}
}

💡 포인트 정리

  • 로컬 클래스는 한정된 기능을 수행하는 용도로 좋음
  • 서드/생성자 내부에서 클래스가 필요한 경우 사용
  • 지역 변수에 접근 시에는 해당 변수가 final이거나 사실상 변경되지 않아야 함
  • 익명 구현 객체로 발전할 수 있는 기반 구조

📌 정리하자면,
로컬 클래스는 짧은 범위에서 클래스가 필요할 때 가장 간편한 방법입니다.
특정 메서드 안에서만 사용할 작은 기능이 있다면,
로컬 클래스를 활용해 코드를 깔끔하게 정리할 수 있습니다.