代码之家  ›  专栏  ›  技术社区  ›  Carl Hörberg

IKVM.net不支持泛型(类型参数)吗?

  •  7
  • Carl Hörberg  · 技术社区  · 16 年前

    我静态地重新编译了一个经常使用泛型的Java库,比如 Collection<?> Collection ,不带类型参数。怎么会?

    1 回复  |  直到 13 年前
        1
  •  6
  •   Mehrdad Afshari    16 年前

    Java泛型由Java编译器处理,并在编译时转换为非泛型版本。这与.NET不同,在.NET中,CLR对类型参数具有一流的支持。在字节码级别, ArrayList<T> 将只是一个简单的问题 ArrayList .

    引用 Java docs

    泛型由Java编译器作为前端转换实现,称为 擦除 ,这是将使用泛型的代码转换或重写为非泛型代码(即,将新语法映射到当前JVM规范)的过程。 换句话说,这种转换会删除所有泛型类型信息;尖括号之间的所有信息都将被删除。 LinkedList<Integer> 将成为 LinkedList . 其他类型变量的使用将替换为类型变量的上限(例如, Object