리플렉션
구체적인 클래스 타입을 알지 못해도 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 하는 자바 API
컴파일 타임이 아닌 런타임에 동적으로 특정 클래스의 정보를 추출할 수 있다.

리플렉션 사용 → 동적으로 클래스를 사용해야할 때
예를 들어
작성 시점 → 어떤 클래스를 사용해야할 지 모르지만
런타임 시점 → 실행해야 하는 경우 필요
예시
- intellij 같은 IDE의 자동완성 기능
- Spring Annotation 사용
정리
사용시 주의점
- 지나친 사용은 성능 이슈가 생길 수 있기 때문에 꼭 필요할 때만 써야함
- 컴파일에 문제를 못 찾고 런타임에서 문제가 발생할 수 있음