공부/Java

[Java] 생성자나 메소드 내부에서 선언되는 로컬 클래스(local class)

ByeongJun 2023. 4. 10. 01:02
반응형
 

[Java] 클래스 내부에 선언하는 중첩 클래스

중첩클래스 클래스 내부에 선언한 클래스 클래스가 여러 클래스와 관계를 맺는 경우에는 독립적으로 선언하는 것이 좋으나, 특정 클래스만 관계를 맺을 경우에는 중첩 클래스로 선언하는 것이

3mmmeee.tistory.com

출처 : <이것이 자바다(개정판)>

 

public class A {
	// 생성자
	A() {
		// 로컬 클래스 선언
		class B { }

		// 로컬 객체 생성
		B b = new B();
	}

	// 메소드
	void method() {
		// 로컬 클래스 선언
		class B { }

		// 로컬 객체 생성
		B b = new B();
	}
}

로컬 클래스는 생성자와 메소드가 실행될 동안만 객체를 생성할 수 있다.

 

로컬 변수(생성자 or 메소드의 매개변수 or 내부에서 선언된 변수)를 로컬 클래스에서 사용할 경우 

로컬 변수는 final 특성을 갖게 되므로 값을 읽을 수만 있고 수정은 불가하다. 

로컬 클래스 내부에서 값을 변경하지 못하도록 제한하기 떄문이다. 

 

Java 7 이전에는 final 키워드를 반드시 붙여야 하지만 

Java 8 이후부터는 명시적으로 붙이지 않아도 된다. (로컬 변수에 키워드를 추가해서 final 변수임을 명시하기도 한다.)

반응형