java怎么获取泛型的实际类型

   2024-10-13 9240
核心提示:在 Java 中,由于泛型擦除的特性,无法直接获取泛型的实际类型。不过可以通过反射来获取泛型的实际类型。以下是一个示例代码:im

在 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() 方法可以获取到泛型的实际类型。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号