在 Java 中,由于泛型擦除的特性,無法直接獲取泛型的實際類型。不過可以通過反射來獲取泛型的實際類型。以下是一個示例代碼:
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class GenericClass<T> {
private Class<T> type;
public GenericClass() {
Type superClass = getClass().getGenericSuperclass();
if (superClass instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) superClass;
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
if (actualTypeArguments.length > 0 && actualTypeArguments[0] instanceof Class) {
this.type = (Class<T>) actualTypeArguments[0];
}
}
}
public Class<T> getType() {
return type;
}
public static void main(String[] args) {
GenericClass<String> genericClass = new GenericClass<>();
System.out.println(genericClass.getType()); // 輸出 class java.lang.String
}
}
在上面的示例中,我們通過反射獲取了泛型的實陷類型,并將其存儲在 type
變量中。然后通過 getType()
方法可以獲取到泛型的實際類型。