Reflection
자바는 객체지향 프로그래밍 언어로서, 클래스와 객체를 기반으로 프로그램을 작성합니다. 일반적으로 클래스를 정의하고 객체를 생성하여 사용하는 것이 일반적이지만, 때로는 실행 중에 클래스와 객체를 동적으로 조작해야 하는 경우가 있습니다. 이때 자바 리플렉션(Java Reflection)이라는 기능이 유용하게 사용됩니다.
자바 리플렉션이란?
자바 리플렉션은 실행 중인 자바 프로그램의 클래스, 메서드, 필드 등의 정보를 동적으로 분석하고 조작할 수 있는 기능입니다. 즉, 컴파일 시간이 아니라 실행 시간에 클래스의 정보를 알아내고, 클래스의 멤버에 접근하거나 수정할 수 있습니다. 이를 통해 자바 프로그램은 실행 중에 다른 클래스의 메서드를 호출하거나, 클래스의 필드 값을 변경하거나, 객체를 생성할 수 있습니다.
리플렉션을 사용하는 이유 리플렉션은 일반적인 자바 프로그래밍에서는 잘 사용되지 않지만, 몇 가지 상황에서 유용합니다.
런타임에 동적으로 클래스를 로드하고 객체를 생성해야 할 때
클래스의 메서드를 호출하거나 필드에 접근해야 할 때
애노테이션(annotation) 정보를 활용해야 할 때
리플렉션의 주요 클래스 자바 리플렉션은 java.lang.reflect 패키지에 정의된 클래스와 인터페이스를 사용하여 구현됩니다. 주요 클래스는 다음과 같습니다.
Class: 클래스에 대한 메타정보를 제공하고, 동적으로 클래스를 로드하고 객체를 생성하는 기능을 제공합니다.
Field: 클래스의 필드에 대한 메타정보를 제공하고, 필드의 값을 가져오거나 변경하는 기능을 제공합니다.
Method: 클래스의 메서드에 대한 메타정보를 제공하고, 메서드를 호출하는 기능을 제공합니다.
Constructor: 클래스의 생성자에 대한 메타정보를 제공하고, 객체를 생성하는 기능을 제공합니다.
Last updated