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

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

Patricia Arquette
发布: 2024-11-15 22:18:02
原创
218 人浏览过

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

确定泛型类型的类:探索替代方案

在泛型编程领域,确定当前泛型类型的特定类通常变得至关重要使用。然而,Java 的泛型类型擦除机制对这一努力提出了挑战。

为了解决这个问题,让我们深入研究一个模拟现实世界场景的示例:

public class MyGenericClass<T> {
  public void doSomething() {
    // Imagine a 3rd party library call that expects a Class object
    T bean = (T) someObject.create(T.class);
  }
}
登录后复制

不幸的是,上面的代码将失败并出现“类型参数 T 的类文字非法”错误。这是因为泛型类型信息在运行时被擦除,导致无法直接使用 T.class。

那么,我们如何克服这个障碍呢?一种可行的解决方案出现了:引入一个接受所需类作为参数的静态工厂方法。

public class MyGenericClass<T> {

  private final Class<T> clazz;

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

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

  public void doSomething() {
    T instance = clazz.newInstance();
  }
}
登录后复制

这种方法允许您在对象创建期间显式指定泛型类,从而有效地绕过运行时擦除问题。然而,它确实有一个缺点:它添加了一些样板代码并使 API 稍微复杂化。尽管如此,当类类型的确定必不可少时,它仍然是一种有效的解决方法。

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

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