package reflection;
import java.lang.reflect.Constructor;
public class ConstructV1 {
public static void main(String[] args) throws ClassNotFoundException {
Class<?> aClass = Class.forName("reflection.data.BasicData");
System.out.println("===== constructors() =====");
Constructor<?>[] constructors = aClass.getConstructors();
for (Constructor<?> constructor : constructors) {
System.out.println(constructor);
}
System.out.println("===== declaredConstructors() =====");
Constructor<?>[] declaredConstructors = aClass.getDeclaredConstructors();
for (Constructor<?> constructor : declaredConstructors) {
System.out.println(constructor);
}
}
}
package reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ConstructV2 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
Class<?> aClass = Class.forName("reflection.data.BasicData");
Constructor<?> constructor = aClass.getDeclaredConstructor(String.class);
constructor.setAccessible(true);
Object instance = constructor.newInstance("hello");
System.out.println("instance = " + instance);
Method method1 = aClass.getDeclaredMethod("call");
method1.invoke(instance);
}
}
- 생성자도 리플렉션 사용하여 인스턴스 생성함
'개발이 좋아서 > Java가 좋아서' 카테고리의 다른 글
애노테이션 - 메타 애노테이션 (0) | 2024.12.01 |
---|---|
애노테이션 - 애노테이션 정의 (0) | 2024.12.01 |
리플렉션 - 활용 예제 (0) | 2024.12.01 |
리플렉션 - 필드 탐색과 값 변경 (0) | 2024.12.01 |
리플렉션 - 메서드 탐색과 동적 호출 (0) | 2024.12.01 |