[java] 리플렉션과 접근제어자
이번에는 자바 프로그래밍에서 중요한 주제인 리플렉션(Reflection)과 접근제어자(Access Modifier)에 대해 알아보겠습니다.
리플렉션(Reflection)
리플렉션은 실행 중인 자바 애플리케이션 내부의 클래스와 인터페이스 등을 검사하거나 사용할 수 있는 기능을 말합니다. 리플렉션을 통해 클래스의 필드, 메서드, 생성자 등에 접근하고 조작할 수 있습니다.
주로 다음과 같은 상황에서 활용됩니다.
- 런타임에 클래스의 정보를 동적으로 얻어와야 하는 경우
- 외부 라이브러리나 프레임워크를 사용하는데, 라이브러리가 제공하는 클래스의 정보를 알아야 하는 경우
public class Example {
public String name;
private void printName() {
System.out.println(name);
}
}
위 예제의 Example
클래스에서 리플렉션을 이용해 name
필드와 printName
메서드에 접근할 수 있습니다.
접근제어자(Access Modifier)
자바에서는 접근제어자를 통해 클래스, 필드, 메서드, 생성자 등의 접근 범위를 제한합니다. 주요 접근제어자로는 public
, protected
, default
, private
가 있습니다.
public
: 어떤 클래스에서든 접근 가능protected
: 동일한 패키지 내에서 또는 해당 클래스를 상속받은 외부 패키지의 클래스에서 접근 가능default
: 동일한 패키지 내에서만 접근 가능private
: 해당 클래스 내부에서만 접근 가능
public class Example {
public String publicField;
protected String protectedField;
String defaultField;
private String privateField;
}
위 코드 예시에서 publicField
는 외부에서 접근 가능하고, privateField
는 해당 클래스 내부에서만 접근 가능합니다.
정리하면, 리플렉션은 런타임에 클래스의 정보를 동적으로 다루는 데 활용되며, 접근제어자는 클래스 멤버들의 접근 권한을 조절합니다. 올바르게 활용하면 안정적이고 유연한 자바 프로그래밍을 할 수 있습니다.