[java] 리플렉션으로 클래스의 생성자 정보 확인하기

자바에서 리플렉션(Reflection)을 사용하면 런타임 시에 클래스의 메서드, 필드, 생성자 등의 정보를 동적으로 가져올 수 있습니다. 이번에는 리플렉션을 사용하여 클래스의 생성자 정보를 확인하는 방법에 대해 알아보겠습니다.

1. Class 클래스의 getConstructors 메서드 활용

Class 클래스의 getConstructors 메서드를 사용하면 특정 클래스의 public 생성자 정보를 가져올 수 있습니다. 아래 예제는 SomeClass라는 클래스의 public 생성자들의 정보를 출력하는 예제입니다.

import java.lang.reflect.Constructor;

public class ReflectionExample {
    public static void main(String[] args) {
        Class<SomeClass> clazz = SomeClass.class;
        
        Constructor<?>[] constructors = clazz.getConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
    }
}

2. Class 클래스의 getDeclaredConstructors 메서드 활용

Class 클래스의 getDeclaredConstructors 메서드를 사용하면 모든 생성자의 정보를 가져올 수 있습니다. 아래 예제는 SomeClass의 모든 생성자들의 정보를 출력하는 예제입니다.

import java.lang.reflect.Constructor;

public class ReflectionExample {
    public static void main(String[] args) {
        Class<SomeClass> clazz = SomeClass.class;
        
        Constructor<?>[] constructors = clazz.getDeclaredConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor);
        }
    }
}

결론

이렇게 하면 리플렉션을 사용하여 클래스의 생성자 정보를 동적으로 확인할 수 있습니다. 주의할 점은 리플렉션은 코드의 가독성을 떨어뜨릴 수 있고, 성능에도 영향을 미칠 수 있다는 것입니다. 가능하면 리플렉션을 사용하기 전에 다른 대안들을 고려해보는 것이 좋습니다.

참고 자료: Oracle Documentation - Class