-
힙 영역에 로드돼 있는 Class Type의 Object를 통해 Field/Method/Constructor를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 API임
-
컴파일 시점이 아닌 런타임 시점에 동적으로 특정 Class의 정보를 추출해낼 수 있는 프로그래밍 기법임
-
주로 FrameWork or Library 개발 시 사용됨
1-1. Reflection API 가 가능한 이유?
- Java에서는 JVM이 실행되면 User가 작성한 JavaCode가 컴파일러를 거쳐 Byte Code로 변환되어 Static 영역에 저장됨
- Class name만 알고 있다면 언제든 Static영역을 뒤져서 정보를 가져올 수 있다는 점임
1-2. Reflection 사용하는 FrameWork/Library
- Spring FrameWork(ex. DI)
- Test FrameWork(ex. JUnit)
- JSON Serialization/Deserialization Library(ex. Jackson)