반응형
이번 글에서는 로컬 클래스(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이거나 사실상 변경되지 않아야 함
- 익명 구현 객체로 발전할 수 있는 기반 구조
📌 정리하자면,
로컬 클래스는 짧은 범위에서 클래스가 필요할 때 가장 간편한 방법입니다.
특정 메서드 안에서만 사용할 작은 기능이 있다면,
로컬 클래스를 활용해 코드를 깔끔하게 정리할 수 있습니다.
'Java > 자바 정리' 카테고리의 다른 글
88. 이벤트 처리를 위한 로컬 클래스 구현 – 콜백 메커니즘 만들기 (0) | 2025.05.12 |
---|---|
87. 내부 클래스에서 외부 클래스 참조하기 – this vs A.this (0) | 2025.05.12 |
86. 인스턴스 멤버 클래스 vs 정적 멤버 클래스 – 접근 가능한 멤버는? (0) | 2025.05.12 |
84. 정적 멤버 클래스의 활용 – 인스턴스와 static 멤버를 모두 가진 클래스 (0) | 2025.05.12 |
83. 정적 멤버 클래스의 독립성 – 외부 인스턴스 없이 자유롭게 활용 (0) | 2025.05.12 |
82. 정적(static) 멤버 클래스 – 외부 객체 없이도 작동하는 중첩 클래스 (0) | 2025.05.12 |