首页 > Java > java教程 > 如何确定泛型类中泛型类型的类?

如何确定泛型类中泛型类型的类?

Barbara Streisand
发布: 2024-11-11 12:43:02
原创
893 人浏览过

How to Determine the Class of a Generic Type in Generic Classes?

泛型类中的泛型类型类确定

在面向对象编程中,确定泛型类型的类通常是必要的。但是,当使用泛型类时,由于运行时的类型擦除,此任务变得具有挑战性。

考虑以下示例,其中 MyGenericClass 尝试使用第三方库创建类型 T 的实例:

public class MyGenericClass<T> {
  public void doSomething() {
    // Create an instance of class T
    T bean = (T)someObject.create(T.class);
  }
}
登录后复制

此方法失败,并出现“类型参数 T 的类文字非法”错误。为了解决这个问题,一个常见的解决方法是将类型 T 作为参数传递给静态方法:

public class MyGenericClass<T> {

    private final Class<T> clazz;

    public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
        return new MyGenericClass<U>(clazz);
    }

    protected MyGenericClass(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void doSomething() {
        // Create an instance of class T
        T instance = clazz.newInstance();
    }
}
登录后复制

通过显式传递类 T,代码可以成功创建所需类型的实例。虽然这种方法不如直接方法调用那么优雅,但它为确定泛型类型的类提供了可靠的解决方案。

以上是如何确定泛型类中泛型类型的类?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板