[java] 클래스의 제네릭 타입 정보 얻기

자바에서는 클래스의 제네릭 타입 정보를 얻는 방법을 제공합니다. 제네릭 타입 정보를 얻는 방법은 런타임 환경에서 객체의 타입 정보를 확인하고 처리해야 하는 경우에 유용합니다.

1. getClass().getGenericSuperclass() 메서드

부모 클래스에 대한 제네릭 타입 정보를 얻을 수 있습니다. 아래의 예시 코드를 통해 확인해보겠습니다.

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public abstract class GenericClass<T> {
    public GenericClass() {
        Type type = getClass().getGenericSuperclass();
        ParameterizedType paramType = (ParameterizedType) type;
        Class<T> genericClass = (Class<T>) paramType.getActualTypeArguments()[0];
        System.out.println("Generic type: " + genericClass.getName());
    }
}

public class ExampleClass extends GenericClass<String> {
    public static void main(String[] args) {
        new ExampleClass();
    }
}

위의 예시 코드에서 GenericClass 클래스의 생성자에서 제네릭 타입 정보를 얻고 해당 정보를 출력합니다.

2. Type 변수 확인

제네릭 타입 정보를 직접적으로 확인할 수도 있습니다. 다음 예시 코드를 참고하시기 바랍니다.

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class ExampleClass<T> {
    public ExampleClass() {
        Type type = getClass().getGenericSuperclass();
        ParameterizedType paramType = (ParameterizedType) type;
        Type[] actualTypeArguments = paramType.getActualTypeArguments();
        if (actualTypeArguments.length > 0) {
            Class<T> genericClass = (Class<T>) actualTypeArguments[0];
            System.out.println("Generic type: " + genericClass.getName());
        } else {
            System.out.println("No generic type information found.");
        }
    }
}

위의 코드에서 ExampleClass 클래스의 생성자에서 제네릭 타입 정보를 직접적으로 확인하고 출력합니다.

반드시 예외 처리를 해주셔야 합니다. 위의 예시 코드에서는 예외 처리를 간단히 하지 않았습니다.

이러한 방법들을 사용하여 자바에서 클래스의 제네릭 타입 정보를 얻을 수 있습니다.