이번 포스팅에서는 reflection이 무엇인지, Java는 어떻게 reflection을 지원하는지 알아보도록 하겠습니다. Reflection이란? 위키피디아에서는 "프로그램이 그 프로그램의 구조와 동작을 실행시간(runtime)에 살펴보고 수정하는 능력"이라고 설명하고 있습니다. 한국어 위키피디아에서는 "반영"이라는 단어를 사용했는데, "내성(內省)"이나 "내관(內觀)"이 의미적으로 더 부합되지 않나 생각해봅니다. 그렇다면 어떻게 프로그램이 자신의 구조와 동작을 살펴보고 수정할 수 있을까요? 사실 실행중인 프로그램과 그 프로그램이 다루는 자료는 모두 메모리에 있는 0과 1의 향연에 지나지 않습니다. 프로그램이란 CPU가 수행할 연산들을 나열한 자료일 뿐이죠. 여기까지 읽으셨다면, 프로그램이 자기 자신을..