Java 리플렉션은 실행 중 클래스와 객체의 필드·메서드·생성자 정보를 조사하고 허용된 동작을 수행하는 기능이다.
원리
Class와 java.lang.reflect의 API로 로딩된 타입 정보를 얻는다. 프레임워크나 디버거가 컴파일 시 구체적인 클래스를 모르는 상황에 활용할 수 있다.
Java 실행과 API |
|---|
JVM · javac · Java 바이트코드 · Java 가비지 컬렉션 · Java 제네릭 |
Java 인터페이스 · Java 예외 처리 · Java Stream API · Java Optional · Java 리플렉션 |
예시
직렬화 도구가 객체의 필드를 조사하거나 설정에 지정된 클래스의 생성자를 찾아 인스턴스를 만드는 데 사용할 수 있다.
주의할 점
캡슐화와 모듈 접근 제한을 무조건 넘을 수 있는 기능은 아니다. 정적 타입 검사가 줄어드는 부분과 실행 비용, 예외 처리를 고려하고 내부 구현에 과도하게 의존하지 않는다.