首页  >  文章  >  Java  >  如何在运行时确定Java中泛型类型的类?

如何在运行时确定Java中泛型类型的类?

Susan Sarandon
Susan Sarandon原创
2024-11-12 07:39:02717浏览

How to Determine the Class of a Generic Type in Java at Runtime?

确定 Java 中泛型类型的类

在 Java 中,处理泛型类时,通常需要确定泛型类型所持有的具体类型运行时。然而,泛型类型信息在编译过程中会被删除,这使得直接访问它成为一个挑战。

让我们考虑一个例子:

public class MyGenericClass<T> {

  public void doSomething() {
    T instance = (T) thirdPartyLib.create(T.class);
  }
}

在这种情况下,T.class 将产生一个由于泛型类型 T 未知,因此出现非法类文字错误。为了解决这个问题,需要一种解决方法。

解决方案

一种有效的解决方法是将类型作为参数传递给静态方法,该方法将向泛型类提供类信息。下面是一个示例:

public class MyGenericClass<T> {

  private final Class<T> type;

  public static <U> MyGenericClass<U> createWithClass(Class<U> type) {
    return new MyGenericClass<>(type);
  }

  private MyGenericClass(Class<T> type) {
    this.type = type;
  }

  public void doSomething() {
    T instance = type.newInstance();
  }
}

此方法允许您显式传递类类型,确保泛型类可以访问必要的信息。虽然此解决方法可能不是最优雅的解决方案,但它提供了一种可靠的方法来在运行时确定泛型类型的类。

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

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