[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을 사용하여 실행 시간에 제네릭 타입의 정보를 얻을 수 있습니다. 이것은 유용한 기능으로, 특히 라이브러리나 프레임워크 개발에서 동적으로 제네릭 타입을 다룰 때 유용하게 활용될 수 있습니다.
위 방법들을 통해 제네릭 타입의 정보를 런타임 시에 안전하게 확인하고 활용할 수 있습니다.