在 Java 中,由于泛型擦除的特性,无法直接获取泛型的实际类型。不过可以通过反射来获取泛型的实际类型。以下是一个示例代码:
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class GenericClass{ private Class 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 ) actualTypeArguments[0]; } } } public Class getType() { return type; } public static void main(String[] args) { GenericClass genericClass = new GenericClass<>(); System.out.println(genericClass.getType()); // 输出 class java.lang.String } }
在上面的示例中,我们通过反射获取了泛型的实陷类型,并将其存储在 type
变量中。然后通过 getType()
方法可以获取到泛型的实际类型。