리플렉션(Reflection)은 프로그램이 실행 중에 자기 자신의 구조를 들여다보고 분석하고 수정할 수 있게 해주는 메커니즘이다.자바에서는 java.lang.reflect 패키지를 통해 이 기능을 제공한다.보통 자바 코드를 작성할 때 우리는 컴파일 시점(Compile Time)에 이미 어떤 클래스를 사용할지 어떤 메서드를 호출할지 알고 있다.그런데 리플렉션을 사용하면 컴파일 시점에는 전혀 모르던 클래스를 런타임에 동적으로 로딩하고 그 클래스의 내부 구조를 탐색하며 객체를 생성하고 메서드를 호출할 수 있다.리플렉션은 자바만의 기능이 아니다. C#, Python, Go, Kotlin, Ruby 등 다양한 언어에서 유사한 기능을 지원한다.다만 자바의 리플렉션은 강타입(Strongly Typed) 언어에서 동적..