代码之家  ›  专栏  ›  技术社区  ›  Margus

如何获取泛型参数类型的类实例

  •  3
  • Margus  · 技术社区  · 17 年前

    在代码中,如果我写这样的代码行:

    GClass<Double> x = new GClass<Double>();
    

    比如说,这个类是这样的:

    public static class GClass<T> {
      private T value = null;
      public GClass() {
        // What is T? 
      }
    }
    

    我在哪里插入了问题“T是什么?”我不想要这个值 null 但是它的类型 Double )

    1 回复  |  直到 14 年前
        1
  •  10
  •   Jon Skeet    17 年前

    你不知道 T 在执行时,除非添加一个构造函数参数 Class<T> 参数并传递调用它 Double.class 以你为例。然后您可以存储该类并在以后使用它。

    这是由于 类型消除 …基本上,泛型只是编译器的魔法,可以插入适当的类型转换并检查 应该 好吧。

    见 Type Erasure 优秀的一部分 Java Generics FAQ .

    你可能还想阅读尼尔·加夫特的博客文章 super type tokens 和 type literals .