<aside> 🐘
Class Reflection이란?
자바(Java)에서 런타임에 클래스, 메서드, 필드 등에 대한 정보를 조회하거나 조작할 수 있게 해주는 기능
</aside>
| 용어 | 설명 |
|---|---|
Class<?> |
클래스에 대한 메타정보 객체 |
| Reflection | 런타임에 클래스 구조를 조회/조작하는 기술 |
Method, Field, Constructor |
각각 메서드, 필드, 생성자 정보를 담은 객체들 |
Class 타입의 메타정보 객체로 표현됨Class<?> clazz = String.class;
Class 객체를 이용해서 클래스에 대해 동적으로 접근하는 기술
사용 예시 >
public class Person {
public void sayHello() {
System.out.println("Hello!");
}
}
Class<?> clazz = Person.class;
Object obj = clazz.getDeclaredConstructor().newInstance(); // new Person()
Method method = clazz.getMethod("sayHello"); // 메서드 객체 얻기
method.invoke(obj); // 메서드 실행