https://dev-coco.tistory.com/94
런타임에 클래스와 인터페이스 등을 검사하고 조작할 수 있는 기능.
구체적인 클래스 타입을 알지 못해도, 그 클래스의 메소드, 타입, 변수들에 접근할 수 있도록 해주는 자바 api
컴파일 타임과 런타임
자바는 컴파일시점에 타입을 결정하는 정적 언어이기 때문에 선언한 타입만 알 뿐 구체적인 클래스에 대해 모를 수 있다.
즉, 리플렉션이란 프로그램 실행중에 사용자와 운영체제 및 기타 프로그램과 상호작용 하면서 클래스와 인터페이스 등을 검사하고 조작할 수 있는 기능
동작원리
Method Area 에 있는 메타 데이터를 가지고 런타임의 클래스를 검사하고 조작하는 기능
→ jvm 메모리 영역의 정보
Method Area 접근 방법
ex)
→ private 한 필드이기 때문에 접근을 할 수가 없다.