[java] 실행 시간에 제네릭 타입의 정보 얻기

Java에서는 제네릭 타입의 정보를 실행 시간에 얻기 위해 몇 가지 방법을 사용할 수 있습니다. 이를 통해 프로그램이 런타임 시 제네릭 타입을 조사하고 조작할 수 있습니다.

1. getClass().getGenericSuperclass()를 사용

getClass().getGenericSuperclass() 메서드를 사용하여 제네릭 타입에 대한 정보를 얻을 수 있습니다. 이 메서드는 클래스의 제네릭 슈퍼클래스의 Type을 반환합니다.

예시:

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

public class GenericClass<T> {
    private Type type;

    public GenericClass() {
        ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
        type = parameterizedType.getActualTypeArguments()[0];
    }

    public Type getType() {
        return type;
    }
}

2. TypeToken을 사용

TypeToken은 구글 구아바(Guava) 라이브러리에서 제공하는 유틸리티 클래스로, 제네릭 타입의 정보를 런타임시에 액세스할 수 있도록 도와줍니다.

예시:

import com.google.common.reflect.TypeToken;
import java.lang.reflect.Type;

public class GenericClass<T> {
    private Type type;

    public GenericClass() {
        TypeToken<T> typeToken = new TypeToken<T>(getClass()) {};
        type = typeToken.getType();
    }

    public Type getType() {
        return type;
    }
}

요약

Java에서는 getClass().getGenericSuperclass() 및 TypeToken을 사용하여 실행 시간에 제네릭 타입의 정보를 얻을 수 있습니다. 이것은 유용한 기능으로, 특히 라이브러리나 프레임워크 개발에서 동적으로 제네릭 타입을 다룰 때 유용하게 활용될 수 있습니다.

위 방법들을 통해 제네릭 타입의 정보를 런타임 시에 안전하게 확인하고 활용할 수 있습니다.