代码之家  ›  专栏  ›  技术社区  ›  Ibrahim Najjar

Java泛型类型变量

  •  6
  • Ibrahim Najjar  · 技术社区  · 15 年前

    我的问题是泛型类和方法中使用的类型变量。

    T = new T(); 或者换句话说,为什么我们不能构造类型变量的对象?


    对象,那么为什么编译器不假定 T 是一个物体,让我们来构造它?

    2 回复  |  直到 12 年前
        1
  •  10
  •   sleske    15 年前

    问题是,在运行时,JVM不知道 T 实际上代表(该信息在运行时不被保留,这就是“类型擦除”的意思)。因此,JVM只看到您想要构造一个新的 T型 ,但不知道实际调用哪个构造函数-因此不允许。

    有解决办法,但不会像你建议的那样奏效。

    是一个物体,让我们来构造它 ??

    当然,运行时可以构造 java.lang.Object T型 .

        2
  •  2
  •   rsp    15 年前

    Class<T> 作为参数引用到需要创建新对象并使用该类创建新实例的构造函数或方法。