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

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

Barbara Streisand
Barbara Streisand原创
2024-11-11 12:43:02913浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn